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
반응형
'Langauge > Python' 카테고리의 다른 글
[Python] 연산 속도 올리기 - 개요 및 알고리즘과 자료구조 (0) | 2024.09.12 |
---|---|
[Python] 8. 파일 처리 (0) | 2023.02.11 |
[Python] 6. 클래스와 모듈 (0) | 2023.02.11 |
[Python] 5. 함수 (0) | 2023.02.10 |
[Python] 4. 내장 자료형 (0) | 2023.02.10 |