Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 예외 발생시키기: raise 문 사용법 완벽 정리

Python에서는 raise 문을 사용하여 다양한 방식으로 예외를 직접 발생시킬 수 있습니다. 예외를 강제로 발생시키면 특정 조건에서 프로그램의 실행 흐름을 의도적으로 중단하고, 오류 상황을 호출자에게 명확하게 알릴 수 있습니다.

raise 문 기본 문법

raise [Exception [, args [, traceback]]]

여기서 Exception은 발생시킬 예외의 종류(예: NameError)를 의미하고, args는 해당 예외에 전달할 인수 값입니다. 인수는 선택 사항이며, 지정하지 않으면 예외 인수는 None으로 설정됩니다.

마지막 traceback 인수 역시 선택 사항이며 실무에서는 거의 사용되지 않습니다. 이 값을 지정하면 예외에 사용될 traceback 객체를 직접 전달할 수 있습니다.

예외 발생 예제

예외는 문자열, 클래스 또는 객체 형태일 수 있습니다. 다만 Python 코어가 발생시키는 대부분의 예외는 클래스 형태이며, 인수는 해당 클래스의 인스턴스입니다. 새로운 예외를 정의하고 발생시키는 것은 매우 간단합니다.

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 예외가 발생되면 이 아래의 코드는 실행되지 않습니다

참고: 과거에는 raise "Invalid level!"처럼 문자열을 직접 발생시키는 방식도 사용되었지만, 이는 Python 2에서만 유효한 문법입니다. Python 3에서는 반드시 예외 클래스를 사용해야 하므로 raise Exception("Invalid level!")과 같이 작성해야 합니다.

발생한 예외 처리하기

발생한 예외를 처리하려면 except 절이 던져진 예외와 동일한 예외(클래스 객체 또는 문자열)를 참조해야 합니다. 즉, 어떤 예외를 발생시켰는지에 따라 except 절에서 정확히 일치하는 예외를 지정해야 정상적으로 처리할 수 있습니다.

try:
    # 비즈니스 로직 작성
except Exception as e:
    # 예외 처리 코드 작성
else:
    # 예외가 발생하지 않았을 때 실행되는 코드

이처럼 raise 문과 try-except 구문을 함께 활용하면, 잘못된 입력값 검증이나 비정상적인 상황 대응 등을 체계적으로 처리할 수 있어 더욱 견고한 프로그램을 작성할 수 있습니다.