본문 바로가기
18.오류예외처리

[파이썬] 에러를 발생시키는 방법 (raise)

by 만다린망고 2023. 5. 17.
반응형

에러를 발생시킬 때는 raise 라는 명령어를 사용합니다. 사용 방법은 크게 세 가지가 있습니다. 

 

1. 파이썬에서 미리 정의된 클래스 사용

파이썬에서는 예외 처리를 위해 아래와 같은 클래스를 정의해놓았습니다. 

ValueError: 값이 적절하지 않을 때 발생하는 예외입니다. 
TypeError: 연산이나 함수 호출 등에서 예상한 데이터 타입과 다른 형식의 객체를 사용할 때 발생하는 예외입니다.
NameError: 정의되지 않은 변수나 함수를 사용하려고 할 때 발생하는 예외입니다.
IndexError: 리스트, 튜플 등의 시퀀스에서 인덱스가 범위를 벗어날 때 발생하는 예외입니다.
KeyError: 딕셔너리에서 존재하지 않는 키를 사용하려고 할 때 발생하는 예외입니다.
FileNotFoundError: 파일을 찾을 수 없을 때 발생하는 예외입니다.
ZeroDivisionError: 0으로 나누기 연산을 수행하려고 할 때 발생하는 예외입니다.
AttributeError: 객체가 속성(attribute) 또는 메서드를 가지고 있지 않을 때 발생하는 예외입니다.
ImportError: 모듈을 가져오지 못할 때 발생하는 예외입니다.

예외 처리 예시는 아래와 같습니다. 괄호 안에는 원하는 메시지를 입력하면 됩니다. 

def reciprocal(x):
    if x == 0:
        raise ZeroDivisionError("division by zero")
    return 1 / x


아래는 위 함수의 사용 예시입니다. 

 

>>> reciprocal(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in reciprocal
ZeroDivisionError: division by zero

 

2. Exception 클래스 사용

모든 예외 클래스의 가장 기본 클래스라고 할 수 있습니다. 위에서 언급한 예외 클래스들은 모두 Exception 클래스를 상속받아 사용합니다. 

예외 처리 예시는 아래와 같습니다.괄호 안에는 원하는 메시지를 입력하면 됩니다. 

def reciprocal(x):
    if x == 0:
        raise Exception("please put non-zero value")
    return 1 / x


아래는 위 함수의 사용 예시입니다. 

 

>>> reciprocal(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in reciprocal
Exception: please put non-zero value

 

3. 예외 클래스를 직접 정의하여 사용

Exception 클래스를 상속받아 예외 클래스를 직접 정의할 수 있습니다. 예시는 아래와 같습니다. 

class mywarning(Exception):
    pass

def reciprocal(x):
    if x == 0:
        raise mywarning("please put non-zero value")
    return 1 / x


아래는 위 함수의 사용 예시입니다. 

 

>>> reciprocal(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in reciprocal
__main__.mywarning: please put non-zero value



반응형

댓글