Python/파이썬 기초

파이썬 raise 오류 발생시키기, 에러 종류 만들기

jimmy_AI 2021. 12. 24. 00:43
반응형

파이썬 예외 발생(raise), 오류 종류 커스텀

안녕하세요.

이번 글에서는 raise를 통해서 예외를 직접 발생시키는 방법과

새로운 오류 종류를 커스터마이징하는 방법에 대해서

간단히 다루어보도록 하겠습니다.

 

raise로 에러 발생시키기 예제 : 기본형

raise라는 명령어를 코드에 사용하면, 원하는 코드 부분에서

에러를 발생시킬 수 있습니다. 

다음 if 문에서 raise를 사용한 오류 발생 예제입니다.

for i in range(10):
    print("i = %d"%i)
    if i == 4:
        raise

i = 4인 경우 raise 명령어를 만나게 했더니,

런타임 에러 메시지가 위처럼 나타났습니다.

 

raise로 원하는 종류의 에러 발생

이번에는 특정 종류의 에러를 발생시켜보도록 하겠습니다.

이 경우는 raise 뒤에 원하는 종류의 오류를 작성해주시면 되는데요.

내장된 오류 종류도 가능하고, 뒤에서 다룰 커스텀한 오류 종류도 상관없습니다.

for i in range(10):
    print("i = %d"%i)
    if i == 4:
        raise KeyError

KeyError로 오류 종류를 지정해본 결과, 원하는 Error 종류가

잘 발생된 것을 확인하였습니다.

 

다만, 에러의 메시지를 알 수 있다면 고쳐야할 에러 종류가 무엇인지

감이 오기 쉽겠지요? 메시지를 넣는 방법은 Error종류(메시지) 형태

오류를 선언해주면 됩니다.

for i in range(10):
    print("i = %d"%i)
    if i == 4:
        raise KeyError("i = 4는 불가능합니다.")

'i = 4는 불가능합니다.' 라는 메시지가 잘 출력된 것을 확인해보았습니다.

반응형

새로운 에러 종류 만들기

때로는 원하는 새로운 종류의 에러를 만들고 싶을 수 있습니다.

새로운 종류의 오류를 만들 경우, 오류의 종류를 쉽게 파악 가능하기도 하고,

try ~ except 구문에서 원하는 종류의 코드 발생 여부도 체크하기 용이합니다.

 

오류를 선언하는 예시는 매우 간단합니다. Exception class를 상속받는 원리

새로운 오류 종류를 커스텀할 수 있는데요. 예시 코드는 다음과 같습니다.

class FourError(Exception):
    def __init__(self):
        super().__init__('i = 4는 불가능합니다.')

예를 들어, FourError라는 이름을 가진 오류를 선언하고,

오류 발생 시에는 'i = 4는 불가능합니다.' 라는 메시지를 출력하게 만들어보았습니다.

오류 이름과 출력메시지는 위의 형식에서 자유롭게 바꿔주셔도 좋습니다.

 

새로 만든 에러를 raise를 이용하여 발생시켜보겠습니다.

for i in range(10):
    print("i = %d"%i)
    if i == 4:
        raise FourError

새로 만든 예외인 FourError가 잘 출력된 것을 확인해보았습니다.