[파이썬] 에러 핸들링과 예외 처리 스타일

에러 핸들링은 소프트웨어 개발에서 매우 중요한 부분입니다. 예기치 않은 상황에서 발생하는 예외를 처리하고, 프로그램의 안정성과 신뢰성을 유지하는 것이 목표입니다. 이번 포스트에서는 Python에서의 에러 핸들링과 예외 처리 스타일에 대해 알아보겠습니다.

try-except 문

Python은 try-except 문을 통해 예외를 처리합니다. try 블록 안에는 예외가 발생할 수 있는 코드를 작성하고, except 블록에는 예외가 발생했을 때 실행될 코드를 작성합니다. 예시를 통해 이해해봅시다.

try:
    # 예외가 발생할 수 있는 코드
    result = 10 / 0
    print(result)
except ZeroDivisionError:
    # ZeroDivisionError 예외가 발생했을 때 실행될 코드
    print("0으로 나눌 수 없습니다.")

위의 코드에서는 ZeroDivisionError 예외가 발생할 수 있는 10 / 0 연산을 try 블록에 작성하였습니다. 이후 except 블록에서는 ZeroDivisionError 예외가 발생했을 때 실행될 코드를 작성하였습니다. 만약 예외가 발생하지 않는다면, except 블록은 실행되지 않습니다.

여러 예외 처리

try-except 문을 사용하여 다양한 예외를 처리할 수도 있습니다. except 키워드 뒤에 발생할 수 있는 예외를 쉼표로 구분하여 작성하면 됩니다. 예시를 살펴봅시다.

try:
    # 예외가 발생할 수 있는 코드
    result = x / y
    print(result)
except ZeroDivisionError:
    # ZeroDivisionError 예외가 발생했을 때 실행될 코드
    print("0으로 나눌 수 없습니다.")
except TypeError:
    # TypeError 예외가 발생했을 때 실행될 코드
    print("잘못된 타입입니다.")

위의 코드에서는 ZeroDivisionErrorTypeError 예외를 모두 처리할 수 있습니다. 예외가 발생하고 해당하는 예외 타입과 일치하는 except 블록이 실행됩니다. 만약 어떤 예외도 발생하지 않는다면, except 블록은 실행되지 않습니다.

모든 예외 처리

모든 예외를 처리하고 싶을 때는 except 블록에 예외 타입을 생략하고 사용할 수 있습니다. 이는 모든 예외에 대한 처리를 담당하는 마지막 예외 처리 방법입니다. 예시 코드를 확인해봅시다.

try:
    # 예외가 발생할 수 있는 코드
    result = open("file.txt", "r")
    for line in result:
        print(line)
    result.close()
except:
    # 모든 예외를 처리하는 코드
    print("예외가 발생했습니다.")

위의 코드에서는 open 함수를 사용하여 파일을 읽어들이는데, 파일이 존재하지 않거나 다른 이유로 예외가 발생할 수 있습니다. except 블록에서는 모든 예외를 처리하는 코드를 작성하여, 예외가 발생했을 때 실행될 로직을 구현할 수 있습니다.

에러 메시지 출력

에러 발생 시에는 보통 에러 메시지를 출력하여 디버깅과 오류 분석에 도움을 줍니다. Python에서는 except 블록 내부에서 as 키워드를 사용하여 에러 메시지를 변수로 받아올 수 있습니다.

try:
    # 예외가 발생할 수 있는 코드
    result = 10 / 0
except ZeroDivisionError as e:
    # ZeroDivisionError 예외가 발생했을 때 실행될 코드
    print("에러 발생:", e)

위의 코드에서는 ZeroDivisionError 예외가 발생했을 때 에러 메시지를 e 변수에 저장하고 출력합니다. 이를 통해 프로그램 실행 중에 발생한 에러를 빠르게 파악할 수 있습니다.


에러 핸들링과 예외 처리는 프로그램의 안정성을 높이고 예외 상황에 대처하는 데 필수적입니다. Python의 try-except 문을 올바르게 사용하여 예외를 처리하는 스타일을 익히시기 바랍니다. 효과적인 예외 처리는 신뢰성 있는 소프트웨어 개발을 위한 필수 요소입니다.