개발로그필름
[Python] raise : 예외를 발생시키는 방법과 활용법 본문
728x90
반응형
SMALL

SMALL
Python에서 오류를 처리할 때 try-except 블록을 자주 사용한다
그런데 때로는 개발자가 직접 예외를 발생시켜야 할 때가 있다
이때 사용하는 것이 바로 raise 문!!
1. raise란?
- Python에서 예외를 강제로 발생시키는 키워드
- 특정 조건에서 프로그램이 원하는 방식으로 동작하도록 제어할 수 있다
반응형
기본적인 raise 사용법
raise ValueError("잘못된 값이 입력되었습니다.")
위 코드를 실행하면 아래와 같은 ValueError가 발생해 프로그램이 중단된다
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 잘못된 값이 입력되었습니다.
2. raise 문법
raise 예외_클래스(예외_메시지)
예외 클래스는 Python 내장 예외(ex. ValueError, TypeError)를 사용할 수도 있고,
개발자가 직접 정의한 사용자 예외 클래스를 사용할 수도 있다
2.1 특정 예외 발생시키기
def divide(a, b):
if b == 0:
raise ZeroDivisionError("0으로 나눌 수 없습니다.")
return a / b
print(divide(10, 2)) # 정상 동작
print(divide(10, 0)) # ZeroDivisionError 발생
2.2 예외 다시 발생시키기
except 블록에서 예외를 잡은 후, 다시 예외를 발생시킬 수도 있다
def process_data(data):
try:
if not isinstance(data, int):
raise TypeError("정수만 입력 가능합니다.")
except TypeError as e:
print("예외 발생:", e)
raise # 다시 예외를 발생시킴
process_data("hello")
process_data("hello")를 실행하면 예외가 한 번 출력된 후 다시 발생하여 프로그램이 종료된다
3. 사용자 정의 예외
Python에서는 내장 예외 클래스 외에도 사용자가 직접 예외 클래스를 정의할 수 있다
Exception 클래스를 상속받아 새로운 예외 클래스를 만들 수 있다
class CustomError(Exception):
pass
raise CustomError("이것은 사용자 정의 예외입니다!")
사용자 정의 예외를 활용하면 특정 상황에 맞는 보다 직관적인 오류 처리를 구현할 수 있다
3.1 사용자 정의 예외 활용 예시
class InvalidAgeError(Exception):
def __init__(self, age, message="유효하지 않은 나이입니다."):
self.age = age
self.message = message
super().__init__(self.message)
def __str__(self):
return f"{self.age}는 {self.message}"
def check_age(age):
if age < 0:
raise InvalidAgeError(age)
print(f"입력된 나이: {age}")
check_age(25) # 정상 출력
check_age(-5) # InvalidAgeError 발생
4. 활용 사례
4.1 입력값 검증
def get_positive_number(value):
if value <= 0:
raise ValueError("양수를 입력해야 합니다.")
return value
print(get_positive_number(10)) # 10 출력
print(get_positive_number(-3)) # ValueError 발생
4.2 특정 조건에서 실행 중단
def validate_data(data):
if "error" in data:
raise RuntimeError("데이터에 오류가 포함되어 있습니다.")
return "데이터 정상 처리"
print(validate_data("good_data")) # 정상 출력
print(validate_data("error")) # RuntimeError 발생
4.3 API 응답 예외 처리
def fetch_data(response):
if response.status_code != 200:
raise ConnectionError(f"서버 응답 오류: {response.status_code}")
return response.json()
5. raise 사용 시 주의할 점
- 명확한 예외 클래스 사용: raise Exception("오류 발생")보다는 raise ValueError("잘못된 값입니다.")처럼 구체적인 예외를 사용
- 불필요한 예외 발생 자제: 지나치게 많은 raise는 코드 가독성을 떨어뜨릴 수 있다
- 예외 메시지 활용: raise를 사용할 때는 오류 원인을 명확히 설명하는 메시지를 포함하는 것이 좋다
6. 정리
- raise는 Python에서 예외를 강제로 발생시키는 키워드
- raise를 활용하면 코드의 오류를 명확히 정의하고, 예외 처리 로직을 체계적으로 설계할 수 있다
- 내장 예외 클래스뿐만 아니라, 사용자 정의 예외를 만들어 상황에 맞는 오류를 처리할 수 있다
- 실전에서는 데이터 검증, API 응답 처리, 특정 조건에서 실행 중단 등의 용도로 활용된다
반응형
LIST
'IT > Python' 카테고리의 다른 글
[Python] List Comprehension 리스트 컴프리헨션 (0) | 2025.03.22 |
---|---|
[Python] !pip install fake_useragent (0) | 2025.03.20 |
[python] turtle graphic 알고리즘 패턴 만들기 코드 예제 (0) | 2023.09.04 |
[Python] turtle graphic 핀 제어 코드 예제 모음 (1) | 2023.09.03 |
[Python] Turtle Graphic 터틀 그래픽 기본 그리기 코드 예제 (0) | 2023.09.03 |