이번 포스팅은 저번 Python 예외 처리 방법에 이어
이번에는 예외를 발생시키는 방법에 대해 알아보겠습니다.
| 예외 발생시키는 방법 (raise문)
프로젝트를 진행하다 보면 예외 처리를 통해 예상치 못한 상황에 대비할 수 있습니다.
파이썬에서는 'raise'문을 사용하여 명시적으로 예외를 발생시키고
프로그램의 흐름을 제어할 수 있습니다.
| raise 문 기본 구조
raise [ExceptionClassName('예외 메시지')]
여기서 'ExceptionClassName'은 발생시키고자 하는 예외 클래스입니다.
예외 메시지는 해당 예외가 발생한 이유를 설명하는 문자를 쓰거나
다른 로그를 통해 예외 처리를 쉽게 도와주게 만들면 됩니다.
| raise 문 예제 - 1
def divide(x, y):
if y == 0:
raise ZeroDivisionError('0으로 나눌 수 없습니다.')
return x / y
try:
result = divide(10, 0)
except ZeroDivisionError as e:
print("에러 발생:", e)
위 코드는 두 개의 인수를 받아 첫 번째 인수를 두 번째 인수로 나누는 함수를 정의했습니다.
그러나 두 번째 인수가 0일 경우에는 ZeroDivisionError 예외를 발생시킵니다.
그리고 try ~ except 문을 사용하여 예외를 처리하고 있으며
ZeroDivisionError가 발생하면 프로그램 흐름이 except 블록으로 이동하여 예외를 처리합니다.
| raise 문 예제 - 2
def example_function(x):
if x < 0:
raise ValueError('음수는 허용되지 않습니다.')
try:
example_function(-5)
except ValueError as e:
print("ValueError 예외 발생:", e)
다른 예제는 음수를 받았을 때 예외를 발생시키는 함수를 정의하고
ValueError를 발생시켜 try ~ except 문을 통해 예외 처리를 하는 코드입니다.
| raise 문 활용
raise 문을 통해 예외를 발생시키는 클래스를 정의하고 예외 처리에 대해 컨트롤을 할 수 있습니다.
예시) 예외 발생 클래스 정의
class MyCustomException(Exception):
pass
def example_function(x):
if x < 0:
raise MyCustomException('음수는 허용되지 않습니다.')
try:
example_function(-5)
except MyCustomException as e:
print("사용자 정의 예외 발생:", e)
위 코드에서 example_function() 은 인수로 음수를 받을 경우, MyCustomException 예외를 발생시킵니다.
MyCustomException 클래스 안에 예외 처리를 위한 방법을 코드로 구현하거나
예외에 대한 자세한 정보를 출력하는 코드를 구현해도 좋습니다.
| 마무리
예외를 발생시키는 raise 문에 대해 알아봤습니다.
처음에는 예외를 강제로 발생시키는 방법에 대해 의문을 가졌으나
프로젝트를 진행하면서 예외 발생 가능성이 있는 부분에 미리 예외 발생을 함으로써
좀 더 예외 상황에 대한 컨트롤이 쉬워진 것 같습니다.
틀린 점이나 질문이 있으시면 댓글로 남겨주세요!
감사합니다!
'Python > Python 정리' 카테고리의 다른 글
Python 객체 속성 처리 메서드 : hasattr(), getattr(), setattr() (0) | 2024.02.20 |
---|---|
Python collections 모듈 : Defaultdict, OrderedDict 이해 (0) | 2024.02.16 |
Python 예외 처리 방법 (try ~ except) (2) | 2024.02.14 |
[Python] Descriptor 이해 : 객체 속성 제어의 고급 기능 (0) | 2023.10.04 |
[Python] 코루틴(coroutine) 정리 : Python 동시성 및 비동기 작업 (0) | 2023.10.03 |