[파이썬] 예외 발생과 raise 문

파이썬에서는 예외 처리를 위해 try-except 문을 사용하여 예외 상황을 잡고 처리할 수 있습니다. 하지만 때로는 예외를 의도적으로 발생시켜야 할 때도 있습니다. 이를 위해 파이썬은 raise 문을 제공합니다. raise 문은 개발자가 직접 예외를 발생시키는 것을 가능하게 해줍니다.

예외 발생하기

예외를 발생시키려면, raise 키워드를 사용하고 발생시키고자 하는 예외를 지정합니다. 일반적으로 내장된 예외 중 하나를 사용하거나, 직접 사용자 정의 예외 클래스를 작성할 수 있습니다.

다음은 raise 문을 사용하여 내장된 예외인 ValueError를 발생시키는 예제입니다:

def divide_numbers(a, b):
    if b == 0:
        raise ValueError("0으로 나눌 수 없습니다.")
    return a / b
    
try:
    result = divide_numbers(10, 0)
    print(result)
except ValueError as ve:
    print(ve)

결과:

0으로 나눌 수 없습니다.

위 예제에서는 divide_numbers 함수가 0으로 나누기를 수행하려고 할 때 ValueError를 발생시킵니다. 예외가 발생하면, 해당 예외를 except 블록에서 잡고 예외 메시지를 출력합니다.

사용자 정의 예외 발생하기

파이썬은 단순히 내장된 예외를 사용하는 것뿐만 아니라, 사용자 정의 예외를 작성하여 더 구체적인 예외를 발생시킬 수도 있습니다. 이는 프로젝트에서 특정한 상황에 맞게 예외를 발생시키고자 할 때 유용할 수 있습니다.

다음은 사용자 정의 예외 클래스 CustomException을 작성하고 발생시키는 예제입니다:

class CustomException(Exception):
    pass

def process_data(data):
    if len(data) == 0:
        raise CustomException("데이터가 비어 있습니다.")
        
try:
    data = []
    process_data(data)
except CustomException as ce:
    print(ce)

결과:

데이터가 비어 있습니다.

위 예제에서는 process_data 함수가 데이터가 비어 있을 때 CustomException을 발생시킵니다. 이 예외를 except 블록에서 잡고 해당 메시지를 출력합니다.

예외를 발생시키는 것은 프로그램의 특정 상황을 감지하고 제어할 수 있는 강력한 도구입니다. 하지만 남용하지 않고, 예외 처리가 필요한 경우에만 사용하는 것이 좋습니다.

현재 파이썬 버전에는 다양한 내장 예외 타입이 있으며, 필요에 따라 사용자 정의 예외를 작성할 수 있습니다. 이를 활용하여 코드를 더욱 견고하고 읽기 쉽게 만들 수 있습니다.