Python
[파이썬 기초] 예외처리
dev-minchur
2025. 1. 8. 12:53
try/except
- try :
- 로직, 기능
- except <오류종류> :
- try문에서 오류가 발생할때, 실행
try:
a_err = int('안녕')
print(a_err)
except ValueError as e:
print(f'오류 메세지: {e}')
오류 메세지: invalid literal for int() with base 10: '안녕'
try/except/else/finallytry :
- try :
- 로직, 기능
- except <오류종류> :
- try문에서 오류가 발생할때, 실행
- else :
- try문이 성공할 때 발생
- finally :
- try문의 결과와 상관없이 실행
assert
- try문의 결과와 상관없이 실행
- 조건이 False일 때, 발생하는 에러
- 디버깅 모드에서만 작동하지만, 파이썬은 기본 디버깅 모드임
a_int = 8
# 참이므로 assert는 실행 X
assert a_int % 2 == 0, "2의 배수가 아닙니다."
print('2의 배수입니다.')
2의 배수입니다.
a_int = 7
# 거짓이므로 assert가 실행 됬다.
assert a_int % 2 == 0, "2의 배수가 아닙니다."
print('2의 배수입니다.')
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
c:\python\gigit_2\day3.ipynb Cell 52 line 3
<a href='vscode-notebook-cell:/c%3A/python/gigit_2/day3.ipynb#Y111sZmlsZQ%3D%3D?line=0'>1</a> a_int = 7
----> <a href='vscode-notebook-cell:/c%3A/python/gigit_2/day3.ipynb#Y111sZmlsZQ%3D%3D?line=2'>3</a> assert a_int % 2 == 0, "2의 배수가 아닙니다."
<a href='vscode-notebook-cell:/c%3A/python/gigit_2/day3.ipynb#Y111sZmlsZQ%3D%3D?line=4'>5</a> print('2의 배수입니다.')
AssertionError: 2의 배수가 아닙니다.
raise error
try :
a_int = 487
if a_int % 4 != 0 :
# 지금 if문이 참이므로 밑에 exception이 실행 된거임
# 만약 거짓일 경우엔 밑에 "4의 배수입니다."가 프린트 된다.
raise Exception("4의 배수가 아닙니다.")
print('4의 배수입니다.')
except Exception as e :
print(f'에러메세지:{e}')
에러메세지:4의 배수가 아닙니다.
- 지금 if문이 참이므로 밑에 exception이 실행 된거임
- 만약 거짓일 경우엔 밑에 "4의 배수입니다."가 프린트 된다.
Exception 만들어서 적용하기
class NotThreeMultipleError(Exception):
def __init__(self, error_msg):
super().__init__(error_msg)
try:
x = 5
if x % 3 != 0:
raise NotThreeMultipleError('3의 배수가 아닙니다.')
print('3의 배수 입니다.')
except Exception as e:
print(f'오류명: {type(e)} / 오류 메세지: {e}')
오류명: <class '__main__.NotThreeMultipleError'> / 오류 메세지: 3의 배수가 아닙니다.