11. 예외처리

1 개요편집

코드에 에러가 발생했을 때 멈추는 것이 기본적인 동작이다. 그러나 에러가 발생하면 멈추는 게 아니라 다시 실행하게 하든가, 다른 명령을 실행하게 하고 싶을 때 사용하는 구문이 try, except 문이다.

1.1 기본 형태편집

try:
    코드
except:
    코드를 실행하다 에러가 나면 실행할 코드.
else:
    에러가 발생하지 않으면 실행할 코드.
finally:
    에러가 발생하든 안하든 실핼할 코드.

2 응용편집

2.1 에러를 무시하고 그냥 계~속 반복 실행하고 싶을 때편집

while 1:
    try:
        코드
    except:
        pass  # 에러가 나면 다음 순회로 돌려 코드를 다시 실행한다.(에러 무시 무한반복)

2.2 에러가 발생하면 넘기되, 에러명을 뽑아내고 싶을 때편집

except Exception as e:

    print(str(e)) 형태로 에러명을 뽑아낼 수 있다.

2.3 에러의 위치를 알고 싶을 때편집

에러명을 알아도 코드가 너무 길어지면 에러의 발생 위치를 특정하기 어렵다. 그럴 땐 traceback을 사용한다.

import traceback
while 1:
    try:
        코드
    except Exception as e:  # 에러가 나면 다음 순회로 돌려 코드를 다시 실행한다.(에러 무시 무한반복)
        print(traceback.format_exc())

2.4 에러에 따라 다른 처리를 하고 싶을 때편집

발생하는 에러의 종류에 따라 지정할 수 있다.

while 1:
    try:
        코드
    except ValueError:
        코드
    except ZeroDivisionError:
        코드
    except:  # 기타 에러가 발생한 경우.
        코드