파이썬 가이드 11 예외 처리
예외 처리
Python에서 예외 처리는 프로그램 실행 중 발생하는 오류(예외)를 관리하여 프로그램이 예기치 않게 종료되는 것을 방지하는 메커니즘입니다. 주로 try, except, else, finally 키워드를 사용하여 구현합니다.
주요 구성 요소:
- *
try블록*: 예외가 발생할 가능성이 있는 코드를 작성합니다. -
*
except블록*:try블록에서 특정 예외가 발생했을 때 해당 예외를 처리하는 코드를 작성합니다. 예외가 발생하지 않으면except블록은 실행되지 않습니다.- 여러 종류의 예외를 처리하기 위해 여러
except블록을 사용할 수 있습니다. - 특정 예외 타입을 명시하여 해당 예외만 처리하고 나머지는 무시할 수 있습니다.
- 예외 객체를 변수에 할당하여 예외에 대한 자세한 정보를 얻을 수 있습니다.
- 여러 종류의 예외를 처리하기 위해 여러
- *
else블록*:try블록에서 예외가 발생하지 않았을 때 실행될 코드를 작성합니다.except블록 뒤에 위치해야 합니다. - *
finally블록*: 예외 발생 여부와 관계없이 항상 실행되는 코드를 작성합니다. 주로 파일 닫기, 네트워크 연결 해제 등과 같은 리소스 정리 작업에 사용됩니다.
예외 발생시키기 (raise):
raise키워드를 사용하여 의도적으로 예외를 발생시킬 수 있습니다.raise뒤에 예외 인스턴스 또는 예외 클래스를 지정하여 어떤 종류의 예외를 발생시킬지 정의할 수 있습니다.except블록 내에서raise만 단독으로 사용하면 원래 발생했던 예외를 다시 발생시킬 수 있습니다.
사용자 정의 예외:
Exception클래스를 상속받아 사용자 정의 예외 클래스를 만들 수 있습니다.
예시:
try:
# 예외가 발생할 수 있는 코드
num = int(input("숫자를 입력하세요: "))
result = 10 / num
except ValueError:
# ValueError가 발생했을 때 처리
print("유효한 숫자가 아닙니다. 다시 시도하세요.")
except ZeroDivisionError:
# ZeroDivisionError가 발생했을 때 처리
print("0으로 나눌 수 없습니다.")
else:
# 예외가 발생하지 않았을 때 실행
print(f"결과: {result}")
finally:
# 예외 발생 여부와 관계없이 항상 실행
print("프로그램 실행 완료.")
<!-- -->
# 예외 강제 발생
def check_age(age):
if age < 0:
raise ValueError("나이는 음수가 될 수 없습니다.")
print(f"나이: {age}")
try:
check_age(-5)
except ValueError as e:
print(f"오류 발생: {e}")