에르노트

파이썬 예외처리 (try: except:) 본문

Dev/Python

파이썬 예외처리 (try: except:)

두콩 2021. 5. 9. 17:02

파이썬 예외처리

파이썬에서는 C관련 언어들에서 흔히 보이는 'try~ catch~' 대신에 'try: except:' 형태로 예외를 처리한다.

 

우선 파이썬에서 흔히 볼 수 있는 예외(에러) 상황들을 정리해보자.

1. Value Error

list = [1.0, 2.0, '']
for i in list:
    print(float(i))

 

ValueError 발생

문자열을 float() 함수의 인자로 넣으면 당연히 float 타입으로 변환할 수 없으므로 ValueError가 발생한다.

 

2. Zero Division Error

a = 1
b = 0
c = a/b

ZeroDivisionError 발생

가끔 정신없이 코드를 짜다보면 종종 발생하는 에러..

 

 

3. Index Error

list = [1, 2, 3]
print(list[3])

IndexError 발생

실제로 존재하지 않는 인덱스에 대해서 접근하려 할 때 발생한다. 본인이 직접 만든 데이터에서는 실수할 일이 잘 없지만 어딘가에서 긁어온 데이터를 대상으로 매우 빈번하게 발생하는 예외 상황이다.

 

4. Key Error

data = {
    'one': 1,
    'two': 2
}

print(data['one'])
print(data['two'])
print(data['three'])

KeyError 발생

위의 인덱스 에러와 유사하다. 존재하지 않는 키 값에 대해서 접근하려 할 때 발생한다.

 

5. File Not Found Error

file = open('memo.txt')  # 해당 디렉토리에 memo.txt 파일 존재안함

FileNotFoundError 발생

없는 파일을 불러올 수 없는 노릇이다. 당연히 에러가 발생한다.

 


그러면 어떻게 위와 같은 예외를 핸들링 할 수 있을까? 역시 파이썬이므로 그 답은 간단하다.

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 절에서 발생할 수 있는 온갖 오류를 다 받아낸다.

Comments