근본적인 질문을 던져봅시다. 예외 객체는 누가 생성하는 것일까요?
예외는 주로 라이브러리에서 많이 발생하지만 실제로는 어떤 코드라도 예외를 발생시킬 수 있습니다.
파이썬에는 예외 객체를 생성하는 키워드가 있습니다. 바로 raise 키워드입니다. 파이썬에서는 오류가 감지되면 raise 문을 사용하여 예외를 생성합니다.
raise[Exception]
위의 형ㅅ익에서 Exception은 예외의 종류입니다. 예외의 종류는 우리가 문자열이나 객체로 정의할 수 있습니다.
예외의 종류가 반드시 있어야 하는 것은 아니지만 있어야 의미가 있습니다. 파이썬에서 사용하는 예외는 물론 클래스입니다.
간단하게 문자열을 이용하여 예외를 정의하고 예외를 발생시켜 봅시다.
raise NameError('Hello')
<실행 결과>
NameError: Hello
raise의 인수는 발생되는 예외를 나타냅니다. 예외 객체이거나 예외 클래스일 수 있습니다. 예외 클래스라면 Exception으로부터 상속된 클래스일 것입니다.
def sub(level):
if level < 1:
raise "Invalid level!"
# 아래의 코드는 예외가 발생하면 실행되지 않습니다.
...
위의 예외를 처리하려면 동일한 문자열을 사용하여야 합니다. 즉 except 안에 동일한 문자열을 써주면 됩니다.
try:
오류가 발생할 수 있는 문장
except "Invalid level!":
오류를 여기서 처리합니다.
else:
나머지 코드는 여기에 놓습니다.