[파이썬] 에러를 발생시키는 방법 (raise)
에러를 발생시킬 때는 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