오늘은 파이썬의 예외처리에 대해서 배웠다.
예외는 발생여부를 사전에 인지할 수 있는 예외와 예상이 불가능한 예외가 있다.
예외가 발생할 경우 잘못된 상황에 대비해서 Exception Handling이 필요하다.
Built-in Exception(파이썬 기본 제공 예외)
예외 이름 | 설명 |
---|---|
ZeroDivisionError | 0으로 나눌 때 발생하는 예외. |
ValueError | 연산이나 함수에 잘못된 값이 들어왔을 때 발생하는 예외. |
TypeError | 연산이나 함수에 잘못된 타입의 객체가 들어왔을 때 발생하는 예외. |
IndexError | 시퀀스 인덱스가 범위를 벗어날 때 발생하는 예외. |
KeyError | 딕셔너리에서 존재하지 않는 키를 접근하려 할 때 발생하는 예외. |
AttributeError | 존재하지 않는 속성을 참조하려 할 때 발생하는 예외. |
FileNotFoundError | 파일을 찾을 수 없을 때 발생하는 예외. |
try:
# 예외 발생코드
except <Exception Type>:
# 예외 발생 시 대응 코드
else:
# 예외가 발생하지 않을때 동작하는 코드. else는 없어도 된다.
finally:
# 예외 여부와 상관없이 실행되는 코드
# 0으로 나눌 때 예외 처리 예시
try:
# 예외가 발생할 수 있는 코드
result = 10 / int(input("숫자를 입력하세요: "))
except ZeroDivisionError as e:
# ZeroDivisionError 예외가 발생했을 때 실행되는 코드
print(e)
print("0으로 나눌 수 없습니다.")
except ValueError:
# ValueError 예외가 발생했을 때 실행되는 코드
print("유효한 숫자를 입력하세요.")
else:
# 예외가 발생하지 않았을 때 실행되는 코드
print(f"결과: {result}")
finally:
# 예외 발생 여부와 상관없이 항상 실행되는 코드
print("프로그램이 끝났습니다.")
# raise <Exception Type>(예외메시지)
raise ValueError("유효하지 않은 값입니다")
assert 문은 디버깅 목적으로 조건이 참인지 확인하는 데 사용된다.
조건이 거짓이면 AssertionError 예외를 발생시킨다.
주로 코드의 특정 상태를 가정할 때 그 가정이 유지되는지 확인하기 위해 사용된다.
# assert 조건, 메시지
assert 2 + 2 == 5, "2와 2의 합은 5가 아닙니다."