Python 에러 발생 방법 (raise)

2024. 2. 15. 17:46· Python/Python 정리
목차
  1. | 예외 발생시키는 방법 (raise문)
  2. | raise 문 기본 구조
  3. | raise 문 예제 - 1
  4. | raise 문 예제 - 2
  5. | raise 문 활용 
  6. | 마무리
728x90
반응형

 

이번 포스팅은 저번 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 문에 대해 알아봤습니다.

처음에는 예외를 강제로 발생시키는 방법에 대해 의문을 가졌으나

프로젝트를 진행하면서 예외 발생 가능성이 있는 부분에 미리 예외 발생을 함으로써 

좀 더 예외 상황에 대한 컨트롤이 쉬워진 것 같습니다.

 

틀린 점이나 질문이 있으시면 댓글로 남겨주세요!

 

감사합니다! 

 

 

 

728x90
반응형
저작자표시 (새창열림)

'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
  1. | 예외 발생시키는 방법 (raise문)
  2. | raise 문 기본 구조
  3. | raise 문 예제 - 1
  4. | raise 문 예제 - 2
  5. | raise 문 활용 
  6. | 마무리
'Python/Python 정리' 카테고리의 다른 글
  • Python 객체 속성 처리 메서드 : hasattr(), getattr(), setattr()
  • Python collections 모듈 : Defaultdict, OrderedDict 이해
  • Python 예외 처리 방법 (try ~ except)
  • [Python] Descriptor 이해 : 객체 속성 제어의 고급 기능
우준세
우준세
준세 단칸방우준세 님의 블로그입니다.
반응형
우준세
준세 단칸방
우준세
전체
오늘
어제
  • 분류 전체보기 (181)
    • Python (75)
      • Python 정리 (30)
      • 백준 알고리즘 (45)
    • C# (48)
      • Winform (12)
    • C & C++ (5)
      • C++ (1)
    • 영상처리 (17)
    • JAVA (11)
      • 코딩자율학습-스프링부트 (11)
    • AI (11)
      • DL (4)
      • Pytorch (5)
      • GAN (2)
    • Computer Science (3)
      • Algorithm (3)
    • Project (7)
    • 책 리뷰 (2)

블로그 메뉴

  • 글쓰기
  • 관리자

인기 글

태그

  • Python
  • c언어
  • pytorch tensor
  • C# 이벤트 프로그래밍
  • C# event
  • c# 정규표현식
  • C# deadlock
  • opencv
  • C# dataGridView
  • C# ContinueWith
  • 알고리즘
  • 스프링부트
  • opencv 객체 추적
  • C# Task 메서드
  • 자바
  • python opencv
  • 이벤트 기반 프로그래밍
  • C# 비동기
  • C# Monitor
  • pytorch tutorial
  • 백준 파이썬
  • C# 비동기 프로그래밍
  • C# Evnet
  • c#
  • c# 비동기프로그래밍
  • 파이썬
  • 백준
  • Winform DataGridView
  • pytorch
  • 코딩자율학습

최근 댓글

최근 글

우준세
Python 에러 발생 방법 (raise)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.