예외처리
오류가 발생하면 프로그램은 에러를 출력하며 강제종료되거나, 원하지 않는 동작을 한다.
이러한 오류를 안전하게 처리하고, 바로 강제종료 되지 않고 오류 발생 후 처리할 루틴을 실행하고자 할 때 예외처리를 사용한다.
가장 기본적인 형태
try:
시도할 코드
except:
에러가 발생했을 경우 실행할 코드
- 리스트의 범위를 넘어간 에러를 테스트해본다.
여러가지 예외를 구분할 경우
try:
시도할 코드
except <예외 클래스1>:
에러클래스 1에 해당할 때 실행할 코드
except <예외 클래스2>:
...
except <예외 클래스3>:
...
- 리스트의 범위를 넘어간 경우,
IndexError
를 명시적으로 처리해본다 - 딕셔너리의 키가 없는 경우,
KeyError
를 명시적으로 처리해본다
예외사항을 변수로 사용할 경우
try:
시도할 코드
except <예외 클래스3> as <변수명>:
<변수명>을 사용한 코드
- 위 예외에서 변수로 전달된 예외객체를 출력해본다
try ~ else
else
문은 try
이후 예외가 발생하지 않을 경우 실행된다.
try:
시도할 코드
except:
예외 발생시 실행 코드
else:
예외가 발생하지 않았을 시 실행할 코드
try ~ finally
finally
문은 try
이후 예외가 발생하건, 하지않건 무조건 마지막에 실행된다.
예외 발생시키기
예외를 발생시킬때는 raise
구문을 사용한다.
예외 만들기
내장 클래스 Exception
을 상속받아 커스텀 예외를 만들 수 있다. 초기화 메서드에서 예외에서 처리할 데이터를 받고, print
문으로 사용되고 싶다면 __str__
메서드를 오버라이드 해준다.
Comments