728x90
예외처리
예외가 발생했을 때, 아래와 같이 처리할 수 있다.
try:
...
except:
...
else:
...
finally:
...
위와 같이 try, except, else, finally 블록을 정의할 수 있고, try블록에서 예외가 발생하면 except블록에서 처리할 수 있다. else블록의 경우 try블록 하위에서 에러가 발생하지 않았을 때 실행되고, finally블록은 예외 발생 여부와 상관없이 실행된다.
Stack trace 출력
예외가 발생하더라도 프로그램이 종료되는 것을 막기위해 아래와 같이 로그를 출력하고, 무시하도록 처리하였다고 해보자.
try:
A = 1
value = A[0]
except:
print("Index Error")
예외가 발생하더라도 프로그램이 종료되지는 않지만, 예외가 발생 위치는 알 수 없다.
이러한 경우 traceback의 print_exc()를 사용하면 프로그램을 종료시키지 않고, 예외에 대한 자세한 로그를 출력할 수 있다. 디버깅이 어려운 환경에서 해당 함수를 통하여 몇 번째 라인에서 에러가 발생했는지 확인할 수 있다. 👍
import traceback
A = 1
try:
value = A[0]
except:
traceback.print_exc()
finally:
print('Finally Block')
'''
--------------출력--------------
Traceback (most recent call last):
File "/home/devjy/traceback_ex.py", line 5, in <module>
value = A[0]
TypeError: 'int' object is not subscriptable
Finally Block
--------------------------------
'''
728x90
'🐍Python | Django' 카테고리의 다른 글
[Python] itertools (0) | 2022.05.26 |
---|---|
[Python] enumerate() (0) | 2022.05.25 |
[Python] Duck Typing? (0) | 2022.05.22 |
[Python] Comprehension? (0) | 2022.05.20 |
[Python] Type Check - type(), isinstance() (0) | 2022.05.18 |