[파이썬] 중첩된 예외 처리 예시

중첩된 예외 처리는 코드 실행 중에 발생하는 예외를 다양한 수준에서 처리하는 기능을 제공합니다. 이는 예외에 대한 각기 다른 처리 로직을 구현하고, 코드 실행 중에 발생할 수 있는 다양한 예외 상황을 대비하는 데 도움이 됩니다.

Python은 중첩된 예외 처리를 위해 try-except 블록을 중첩하여 사용할 수 있습니다. 이 블록은 코드의 특정 부분을 감싸고, 해당 부분에서 발생할 수 있는 예외를 캐치하여 처리하는 역할을 합니다. 아래의 예시 코드를 통해 중첩된 예외 처리의 기본 개념과 활용 방법을 알아보겠습니다.

try:
    # 코드 블록 1
    # 예외가 발생할 수 있는 코드
    statement_1
    
    try:
        # 코드 블록 2
        # 더 깊은 수준의 중첩된 예외 처리
        statement_2
        
    except ExceptionType2:
        # 예외 처리 로직 2
        handle_exception_2
        
    except ExceptionType3:
        # 예외 처리 로직 3
        handle_exception_3
        
except ExceptionType1:
    # 예외 처리 로직 1
    handle_exception_1

위의 코드에서 statement_1은 첫 번째 코드 블록에서 발생할 수 있는 예외를 나타냅니다. 만약 statement_1에서 예외가 발생하면, 이 예외는 첫 번째 except ExceptionType1 블록에서 처리됩니다.

두 번째 코드 블록인 statement_2에서도 예외가 발생할 수 있습니다. 이때 발생한 예외는 중첩된 try-except 구문에서 처리됩니다. 예외의 타입에 따라 ExceptionType2 또는 ExceptionType3에 해당하는 예외 처리 로직이 실행됩니다.

중첩된 예외 처리를 사용하면 각 코드 블록에서 발생하는 예외를 세부적으로 처리할 수 있습니다. 이는 예외가 발생할 가능성이 있는 다양한 상황을 고려하고, 적절한 예외 처리 로직을 구현하는 데 도움이 됩니다.

예시:

try:
    # 파일 열기 시도
    file = open("filename.txt", "r")
    
    try:
        # 파일에서 데이터 읽어오기
        data = file.read()
        
        # 데이터 처리 로직
        processed_data = process_data(data)
        
        # 결과 출력
        print(processed_data)
    
    except FileNotFoundError:
        # 파일이 존재하지 않는 경우 처리
        print("File not found.")
    
    except PermissionError:
        # 파일에 접근할 권한이 없는 경우 처리
        print("Permission denied.")
    
    finally:
        # 파일 닫기
        file.close()

except Exception as e:
    # 기타 예외 처리
    print("An error occurred:", str(e))

위의 예시 코드는 파일을 열고 읽어와서 데이터를 처리하는 작업을 수행하는 예시입니다. 파일 관련 예외(FileNotFoundError, PermissionError)를 중첩된 예외 처리로 처리하였고, 예외가 발생하더라도 finally 블록에서 파일을 항상 닫아줍니다.

중첩된 예외 처리는 코드의 가독성과 유지보수성을 높여주며, 예외 상황에 대한 세밀한 처리를 가능하게 합니다. 적절하게 활용하면 프로그램의 안정성을 향상시킬 수 있습니다. ```