Tags
- SQL
- 글로벌소프트웨어캠퍼스
- 사진
- fdr-x3000
- 650d
- CS231n
- 시청
- 군산
- 우리fis아카데미
- 수요미식회
- 도쿄
- 여행
- 건담
- 전주
- 축복렌즈
- 전시
- 해리포터
- 제주도
- ai_엔지니어링
- 대만
- 카페
- 우리에프아이에스
- 우리fisa
- 17-55
- 맛집
- 축복이
- 대만여행
- Python
- k-디지털트레이닝
- 오사카
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Today
- Total
Recent Posts
300x250
브렌쏭의 Veritas_Garage
[우리FISA] Exception Handling 본문
예외처리
- 예외가 발생하면 프로그램이 즉시 종료된다.
- 예외처리를 통해 예외가 발생해도 프로그램이 종료되지 않도록 할 수 있다.
- try, except, finally 를 사용한다.
try:
# 예외가 발생할 수 있는 코드
print(10 / 0)
except ZeroDivisionError as e:
# 예외가 발생했을 때 실행할 코드
print(e)
finally:
# 예외 발생 여부와 상관없이 실행할 코드
print('finally')
온갖 종류의 예외가 존재한다.
예외의 종류
- 실행 시간에 발생하는 예외 (Runtime Error)
- ZeroDivisionError
- NameError
- TypeError
- ValueError
- FileNotFoundError
- KeyboardInterrupt
- EOFError
- ...
- 문법적으로 발생하는 예외 (Syntax Error)
- SyntaxError
- IndentationError
- TabError
- ...
- 사용자 정의 예외 (User-defined Exception)
- raise Exception('메시지')
- raise ValueError('메시지')
- raise ZeroDivisionError('메시지')
- ...
예외 구조
- 모든 예외는 BaseException을 상속받는다.
- BaseException
- SystemExit
- KeyboardInterrupt
- GeneratorExit
- Exception
- StopIteration
- StopAsyncIteration
- ArithmeticError
- FloatingPointError
- OverflowError
- ZeroDivisionError
- AssertionError
- AttributeError
- BufferError
- EOFError
- ImportError
- LookupError
- IndexError
- KeyError
- MemoryError
- NameError
- UnboundLocalError
- OSError
- BlockingIOError
- ChildProcessError
- ConnectionError
- BrokenPipeError
- ConnectionAbortedError
- ConnectionRefusedError
- ConnectionResetError
- FileExistsError
- FileNotFoundError
- InterruptedError
- IsADirectoryError
- NotADirectoryError
- PermissionError
- ProcessLookupError
- TimeoutError
- ReferenceError
- RuntimeError
- NotImplementedError
- RecursionError
- SyntaxError
- IndentationError
- TabError
- IndentationError
- SystemError
- TypeError
- ValueError
- UnicodeError
- UnicodeDecodeError
- UnicodeEncodeError
- UnicodeTranslateError
- UnicodeError
- Warning
- DeprecationWarning
- PendingDeprecationWarning
- RuntimeWarning
- SyntaxWarning
- UserWarning
- FutureWarning
- ImportWarning
- UnicodeWarning
- BytesWarning
- ResourceWarning
예외 처리 방법
LBYL(Look Before You Leap)
= 에러가 나기 전에 잘 코드를 써라
- 현실적으로 불가능한 경우가 많다.
- 코드가 복잡해진다.
EAFP(Easier to Ask for Forgiveness than Permission)
= 허락보다 용서를 구하는 것이 쉽다
- 일단 코드를 실행하고 예외가 발생하면 예외처리를 하는 방식
- 파이썬에서 권장하는 방식
traceback
- 예외가 발생한 위치를 추적하는 모듈
traceback.print_exc()
: 예외가 발생한 위치를 출력traceback.format_exc()
: 예외가 발생한 위치를 문자열로 반환
import traceback
try:
print(10 / 0)
except ZeroDivisionError as e:
print(e)
traceback.print_exc()
assert
- assert 조건식, '메시지'
- 조건식이 False이면 AssertionError 예외가 발생한다.
assert 1 == 1, '1이 아닙니다.'
assert 1 == 2, '1이 아닙니다.'
raise
- raise 예외클래스('메시지')
- 예외를 강제로 발생시킨다.
raise Exception('예외가 발생했습니다.')
raise ValueError('값이 잘못되었습니다.')
'[Project_하다] > [Project_공부]' 카테고리의 다른 글
[우리FISA] Python Class (0) | 2024.07.16 |
---|---|
[우리FISA] OOP (0) | 2024.07.15 |
[우리FISA] Standard Input/Output, stdio (0) | 2024.07.15 |
[우리FISA] Python Modules, Library, Package (0) | 2024.07.15 |
[BoostCouse] NumPy (1) | 2024.07.14 |
[우리FISA] 5일차 Functions continue..... (1) | 2024.07.12 |
[우리FISA] 4일차 Function (0) | 2024.07.11 |
Comments