1. 기본 사용법
가장 기본적인 try except 구문
try:
# 1. 예외(오류)가 발생할 가능성이 있는 코드 블록
# 이 코드가 실행됩니다.
pass
except 예외_유형:
# 2. 'try' 블록에서 지정된 '예외_유형'의 예외가 발생했을 때 실행될 코드 블록
# 예외 처리 코드가 들어갑니다.
pass
2. 다양한 사용 방법
A. 특정 예외 처리
특정 오류 유형에 대해서만 처리
try:
number = int("abc") # ValueError 발생
except ValueError:
print("오류: 유효하지 않은 값입니다. 숫자로 변환할 수 없습니다.")
# 출력: 오류: 유효하지 않은 값입니다. 숫자로 변환할 수 없습니다.
B. 여러 개의 예외 처리
하나의 try 블록에서 발생 가능한 여러 종류의 예외를 각각 다르게 처리
try:
result = 10 / 0 # ZeroDivisionError 발생
my_list = [1, 2]
print(my_list[5]) # IndexError 발생
except ZeroDivisionError:
print("오류: 숫자를 0으로 나눌 수 없습니다.")
except IndexError:
print("오류: 리스트 인덱스 범위를 벗어났습니다.")
참고: 예외는 발생 시점에 즉시 처리되므로, 위 예시에서는 ZeroDivisionError가 먼저 발생하여 해당 except 블록만 실행되고 IndexError가 발생하는 코드는 실행되지 않음
C. 발생한 예외 객체 얻기
as 키워드로 발생한 예외 객체에 접근할 수 있음
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"발생한 예외 객체: {e}")
# 출력: 발생한 예외 객체: division by zero
D. 모든 예외 처리 (권장하지 않음)
예외 유형을 명시하지 않고 모든 예외를 포괄적으로 처리할 수 있습니다. 일반적으로는 Exception 클래스를 사용해 처리합니다.
try:
# 어떤 코드가 실행됨
pass
except Exception:
print("예상치 못한 오류가 발생했습니다.")
# 또는
except: # 디버깅이 어려워져 'Exception'을 사용하는 것이 더 권장됨
print("모든 종류의 오류를 잡습니다.")
3. else와 finally 블록 (선택 사항)
else 블록
예외가 발생하지 않았을 때 실행
try:
file = open("data.txt", "r")
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
else:
print("파일을 성공적으로 열었습니다. 이제 파일 내용을 처리합니다.")
file.close()
finally 블록
try 블록을 떠날 때 항상 실행 (파일, 네트워크 연결 등을 닫거나 정리하는 코드를 많이 사용)
try:
# 리소스 사용 시작
x = 10 / 2
except ZeroDivisionError:
print("오류 발생")
finally:
print("이 코드는 오류 유무와 관계없이 항상 실행됩니다. (리소스 정리 등)")
최종 정리
try:
# 1. 예외 발생 가능 코드
pass
except 예외_유형_1:
# 2. 예외_유형_1 처리 코드 (예외 발생 시 실행)
pass
except 예외_유형_2:
# 3. 예외_유형_2 처리 코드 (예외 발생 시 실행)
pass
else:
# 4. 예외가 발생하지 않았을 때만 실행
pass
finally:
# 5. 예외 유무와 관계없이 항상 마지막에 실행
pass
댓글 남기기