Recent Posts
Recent Comments
에르노트
파이썬 예외처리 (try: except:) 본문
파이썬에서는 C관련 언어들에서 흔히 보이는 'try~ catch~' 대신에 'try: except:' 형태로 예외를 처리한다.
우선 파이썬에서 흔히 볼 수 있는 예외(에러) 상황들을 정리해보자.
1. Value Error
list = [1.0, 2.0, '']
for i in list:
print(float(i))
문자열을 float() 함수의 인자로 넣으면 당연히 float 타입으로 변환할 수 없으므로 ValueError가 발생한다.
2. Zero Division Error
a = 1
b = 0
c = a/b
가끔 정신없이 코드를 짜다보면 종종 발생하는 에러..
3. Index Error
list = [1, 2, 3]
print(list[3])
실제로 존재하지 않는 인덱스에 대해서 접근하려 할 때 발생한다. 본인이 직접 만든 데이터에서는 실수할 일이 잘 없지만 어딘가에서 긁어온 데이터를 대상으로 매우 빈번하게 발생하는 예외 상황이다.
4. Key Error
data = {
'one': 1,
'two': 2
}
print(data['one'])
print(data['two'])
print(data['three'])
위의 인덱스 에러와 유사하다. 존재하지 않는 키 값에 대해서 접근하려 할 때 발생한다.
5. File Not Found Error
file = open('memo.txt') # 해당 디렉토리에 memo.txt 파일 존재안함
없는 파일을 불러올 수 없는 노릇이다. 당연히 에러가 발생한다.
그러면 어떻게 위와 같은 예외를 핸들링 할 수 있을까? 역시 파이썬이므로 그 답은 간단하다.
try: 예외를 유발할 수 있는 구문
except <예외 종류>: 예외 처리를 수행하는 구문
이걸 위에 1번 Value Error에 적용해보면 다음과 같이 예외처리 구문을 짤 수 있다.
list = [1.0, 2.0, '']
try:
for i in list:
print(float(i))
except ValueError:
print(0.0)
이렇게하면 ValueError가 발생했을 때 자연스럽게 0.0을 출력하면서 프로그램이 오류없이 동작할 수 있게해준다.
list = [1.0, 2.0, '']
try:
for i in list:
print(float(i))
except:
print(0.0)
문법적으로 권장되는 방식은 아니지만 에외 종류를 명시하지 않아도 무방하다. 이때는 try 절에서 발생할 수 있는 온갖 오류를 다 받아낸다.
'Dev > Python' 카테고리의 다른 글
파이썬 self (takes 0 positional arguments but 1 was given FIX) (2) | 2021.07.31 |
---|---|
파이썬 논리 연산자 - and, or, not (2) | 2021.07.24 |
[python pip] Fatal error in launcher: 오류 해결법 (0) | 2019.10.31 |
파이썬 return, break, continue (0) | 2018.04.24 |
Comments