Langauge/Python
[Python] 7. 예외처리
Pupbani
2023. 2. 11. 22:51
728x90
반응형
예외(Exception)
예외란 코드 실행 도중 일어나는 에러를 말한다.
파이썬에서는 이러한 예외가 발생했을 때 처리하는 방법이 존재한다.
- try 블럭 : 실행할 코드를 작성하는 블럭, try 블럭안에 try-except 블럭을 추가할 수 있다.
- except 블럭 : 예외가 발생했을 때 실행할 코드를 작성하는 블럭
- else 블럭 : 정상 실행 시 try 블럭 실행 후 실행할 코드를 작성하는 블럭
- finally 블럭 : 예외가 발생하거나 발생하지 않을 경우에도 실행할 코드를 작성하는 블럭
기본 흐름
정상 실행 시 | 에러 발생 시 | |
O | try | O |
X | except | O |
O | else | X |
O | finally | O |
예외의 종류
파이썬이 내장하고 있는 예외는 다음과 같다.
Built-in Exceptions
In Python, all exceptions must be instances of a class that derives from BaseException. In a try statement with an except clause that mentions a particular class, that clause also handles any excep...
docs.python.org
사용 예시
import sys
try:
l1:list = [1,2,3,4,5]
print(l1[6])
except IndexError as IE:
# as 로 별명을 지을 수 있다.
print(IE)
print("index를 벗어났습니다.",file=sys.stderr)
except KeyError as KE:
# except는 여러개 쓸 수 있다.
print(KE,file=sys.stderr)
else:
print("else 블럭입니다.")
finally:
print("finally 블럭입니다.")
raise() 함수를 사용해 예외를 발생 시킬 수 있다.
# raise [Exception [, args [, traceback]]]
# raise : 예외 발생
# raise 예외 클래스 : 지정한 예외 발생
# raise 예외 클래스("에러 메시지") : 지정한 예외 발생하고 에러 메시지 출력
raise IndexError("hello")
커스텀 예외 작성
- Exception 클래스를 상속받아 클래스를 작성하여 커스텀 예외를 만들 수 있다.
import sys
class MyException(Exception):
def __init__(self, *args: object) -> None:
super().__init__(*args)
raise MyException("My custom error")
assert 키워드로 현재 상태가 맞는지 확인 할 수 있다.
- 맞을 경우 넘어감
- 아닐경우 AssertionError 발생
# assert 검사할 것, 예외 시 보여줄 메시지
# assert 1 < 10, "10 is bigger than 1" # 맞음
assert 1 > 10, "1 is bigger than 10" # 틀림
728x90
반응형