이전 글에서는 try-except로 프로그램이 에러로 멈추지 않도록 하는 방법을 배웠죠.
이번엔 한 단계 더 나아가서,
raise로 강제로 예외 발생하기
사용자 정의 예외 클래스(Custom Exception) 만들기를 배워볼 거예요.
1️⃣raise 키워드란?
코드에서 직접 예외를 발생시키는 키워드.
특정 상황에서 일부러 오류를 발생시켜서 흐름을 제어할 수 있어요.
# 예제 1: 간단한 raise 사용
def divide(a, b):
if b == 0:
raise ZeroDivisionError("0으로 나눌 수 없습니다!")
return a / b
print(divide(10, 2)) # 5.0
print(divide(10, 0)) # ZeroDivisionError 발생
📌 raise는 "이 상황은 프로그램에서 처리하지 않겠다!"라고 알려주는 것과 같아요.
2️⃣ 사용자 정의 예외 클래스(Custom Exception)
기본 예외로는 상황을 정확하게 표현하기 어려울 때,
내가 직접 예외 클래스를 만들어 쓰면 코드 가독성이 올라가요.
# 예제 2: 사용자 정의 예외
class NegativeNumberError(Exception):
"""음수일 때 발생시키는 예외"""
pass
def check_positive(num):
if num < 0:
raise NegativeNumberError("음수는 입력할 수 없습니다!")
print(f"{num}은(는) 올바른 값입니다.")
try:
check_positive(-5)
except NegativeNumberError as e:
print(e)
출력
음수는 입력할 수 없습니다!
3️⃣ 사용자 예외 활용하기
class PasswordTooShortError(Exception):
"""비밀번호가 너무 짧을 때 발생"""
pass
def set_password(pw):
if len(pw) < 8:
raise PasswordTooShortError("비밀번호는 최소 8자리 이상이어야 합니다.")
print("비밀번호가 설정되었습니다.")
try:
set_password("1234")
except PasswordTooShortError as e:
print(f"에러 발생: {e}")
출력
에러 발생: 비밀번호는 최소 8자리 이상이어야 합니다.
🎯 오늘의 핵심 정리
| 키워드 | 개념 설명 |
| raise | 코드에서 직접 예외를 발생시킴 |
| 사용자 정의 예외 | Exception 클래스를 상속받아 새 예외 정의 |
| try-except + raise | 상황별로 세밀한 에러 처리 가능 |
🌟 언제 쓸까?
데이터 검증 단계에서 조건을 만족하지 않을 때 바로 중단하고 알릴 때
코드 구조가 커질수록 “이런 경우는 오류 상황”이라고 명확히 표시하고 싶을 때
라이브러리, API 등 다른 사람이 쓸 코드를 작성할 때
🔜 다음 글 예고
[파이썬] 웹 데이터 수집 기초 – requests와 BeautifulSoup 사용법
그동안 배운 자료형, 조건문, 반복문, 함수, 클래스 등 파이썬 기초 내용을 한 번에 정리할 거예요.
'SK-Rookies > 파이썬' 카테고리의 다른 글
| [파이썬] 표준 라이브러리 완전정리 (0) | 2025.09.03 |
|---|---|
| [파이썬] 코드 재사용을 위한 모듈 & 패키지 이해하기 (0) | 2025.09.03 |
| [파이썬] 클래스 상속 완전정복! super()로 더 깔끔하게 (0) | 2025.09.03 |
| [파이썬] 객체지향 프로그래밍 입문: 클래스와 객체 (0) | 2025.07.04 |
| [파이썬] 에러 걱정 끝! try-except로 예외 처리 배우기 (0) | 2025.07.04 |