Python에서 예외를 처리하는 방법(Try-Except-Finally)

try, Except, else 및 finally 블록을 사용하여 Python에서 예외를 처리하는 방법을 알아보세요. 오류가 없고 충돌에 강한 Python 코드를 작성하세요.

Editor에서 이 솔루션을 사용해 보세요.

개요

파일 누락, 잘못된 사용자 입력, 데이터베이스 오류 또는 네트워크 중단과 같은 예상치 못한 상황을 처리할 수 있는 강력한 소프트웨어를 준비해야 합니다. Python에서 오류가 발생하면 예외가 발생합니다. 처리되지 않은 채로 두면 예외로 인해 프로그램이 즉시 중단되고 역추적 스택이 인쇄됩니다.

런타임 오류를 관리하기 위한 Python의 기본 도구는 `try-exc` 블록입니다. 오류를 발생시킬 수 있는 코드를 'try' 블록 안에 배치하고, 하나 이상의 'Exception' 블록 안에 오류 처리 코드를 정의합니다. 일반적인 예외(`제외:`)를 모두 포착하면 버그를 숨길 수 있으므로 정확한 예외 클래스(예: `ValueError` 또는 `ZeroDivisionError`)를 지정하는 것이 좋습니다.

예외 흐름을 더욱 표현적으로 만들기 위해 Python은 `else`와 `finally`라는 두 개의 추가 블록을 제공합니다. 'else' 블록은 'try' 블록에서 예외가 발생하지 않은 경우에만 실행됩니다. 이는 성공 시에만 실행되어야 하는 코드에 유용합니다. `finally` 블록은 예외 발생 여부에 관계없이 *항상* 실행되므로 파일 닫기나 데이터베이스 연결과 같은 정리를 위한 완벽한 장소입니다.

코드 및 실행 출력

이 스크립트는 try, Except, else 및 finally를 사용하여 Python에서 강력한 오류 처리를 보여줍니다.

def divide_numbers(a, b):
    try:
        # Code that might raise an exception
        result = a / b
    except ZeroDivisionError:
        # Handling a specific exception
        print("Error: Cannot divide by zero!")
    except TypeError:
        # Handling another exception type
        print("Error: Inputs must be numbers!")
    else:
        # Run only if try block succeeded
        print(f"Success! Result of {a}/{b} is {result}")
    finally:
        # Runs no matter what
        print("Division attempt completed.")

divide_numbers(10, 2)
print("---")
divide_numbers(10, 0)
터미널 출력
Success! Result of 10/2 is 5.0
Division attempt completed.
---
Error: Cannot divide by zero!
Division attempt completed.

단계별 구현

  • 실패할 수 있는 코드를 try 블록 안에 넣으세요.
  • 오류를 적절하게 처리하려면 Except ExceptionType: 블록을 사용하여 특정 오류 유형을 포착하세요.
  • 성공적인 try 블록에서만 실행되어야 하는 코드에는 else를 사용하세요.
  • 오류에 관계없이 정리 작업이 실행되도록 하려면 finally를 활용하세요.

자주 묻는 질문

단일 제외 블록에서 여러 예외를 포착할 수 있나요?

예, (ValueError, TypeError)를 e:로 제외하고 튜플로 전달할 수 있습니다.

나만의 예외를 어떻게 발생시키나요?

raise 키워드와 예외 인스턴스를 사용하십시오: raise ValueError("잘못된 구성 값").

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.