반응형
예외처리 (try ~ except)
프로그램 처리 도중 에러가 발생하였을때 예외처리를 하지않으면 그대로 에러가 발생하며 해당 라인에서 정지된다.
하지만 에러가 발생하더라도 프로그램을 강제종료하지않고 해당 에러에 대한 조치를 하면서 프로그램을 실행하도록 하는것이 예외처리이다.
형식
try:
예외가 발생할 수 있는 code
except 예외클래스명[as 변수]:
try문 안에서 예외가 발생한 경우 처리하는 code
else:
try문 안에서 예외가 발생하지 않는 경우 처리하는 code
finally:
try 블록에서 예외가 발생하든 안하든 무조건 실행하는 code
ZeroDivisionError
try:
s=0
5/s
except ZeroDivisionError as err:
print('에러는',err)
finally:
print("무조건 실행")
"""결과
에러는 division by zero
무조건 실행
"""
여기서 5를 0으로 나누려다 ZeroDivisionError가 발생한다.
이때 except 문이 실행되면서 변수 err에 메세지가 기억되고 print로 출력된다.
그 뒤에 항상 수행되는 finally문이 실행되며 '무조건 실행'이 출력된다.
try:
s=0
#5/s -> 실행시 ZeroDivisionError 발생
aa=[1,2]
#aa[3] -> 실행시 IndexError 발생
f= open('e.txt') # Exception 발생
except ZeroDivisionError as err:
print('에러는',err)
except IndexError as err:
print('참조 범위 오류',err)
except Exception as err:
print('에러 발생', err)
finally:
print("무조건 실행")
"""결과
에러 발생 [Errno 2] No such file or directory: 'e.txt'
무조건 실행
"""
사실 f= open('e.txt')는 FileNotFoundError이지만 Exception은 다양한 에러를 처리하는 기본적인 예외처리문이다.
주의할점은 Exception 클래스는 다른 예외 클래스의 부모클래스이기 때문에 가장 마지막에 적어주어야 정확한 예외처리가 가능하다.
728x90
반응형