Programming

; develop a program

Back-End/Python

[Python] 예외(Exception) 클래스 정의

Clloud_ 2022. 9. 30. 12:21
반응형

이번 포스팅에서는 파이썬의 예외(Exception) 클래스 구현 및 발생에 대하여 공부를 해보고자 한다.

 


예외 상속 구조

파이썬은 예외를 모두 클래스로 정의해 사용한다.

예외가 발생하는 상황과 관련된 instance 변수, 메소드 정의한 클래스

 

프로그램 로직 흐름상 예외가 발생해야 하는 경우 예외 클래스를 정의할 수 있다.
사용자 정의 예외는 Exception을 상속받아서 만든다.

 

예외의 상속 구조

 


예외(Exception) 클래스 구현 및 발생시키기

예외 클래스 작성

Exception을 상속받아 만든다

class MyError(Exception):
    #구현 코드

 

예외 발생시키기

if something_problem == True:
    raise MyError()

raise 예외 객체는 예외를 발생시킨다.

예외가 발생해야 하는 조건이 True일 경우 대부분 if 문에 작성한다.

 

return: 정상적으로 종료 후 돌아간다.
raise: 비정상적으로 종료 후 돌아간다.

 

예제

예외 클래스를 정의한다.

class InvalidMonthException(Exception):
    
    def __init__(self, invaild_month):
        self.invaild_month = invaild_month
        
    def __str__(self):  # Exception 메세지.
        return f'{self.invaild_month}는 유효한 월이 아닙니다. 1 ~ 12월만 가능합니다.'

예외를 발생시키는 함수를 생성한다.

def set_month(month):
    if month < 1 or month > 12:
        raise InvalidMonthException(month)
    else:
        print(month, "월을 저장했습니다.")

생성한 함수를 호출한다.

set_month(10)
set_month(0)

[실행결과]

10 월을 저장했습니다.

InvalidMonthException: 0는 유효한 월이 아닙니다. 1 ~ 12월만 가능합니다.

 


반응형