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
Posted in

댓글 남기기

호랑이는 죽어서 가죽을 남기고, 사람은 죽어서 블로그를 남긴다.에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기