Python 사용자 정의 예외란?
Python은 표준 내장 예외 클래스를 상속받아 자신만의 사용자 정의 예외(Custom Exception)를 만들 수 있도록 지원합니다. 이를 활용하면 프로그램에서 발생하는 오류 상황을 더 명확하고 구체적인 메시지로 표현할 수 있습니다.
RuntimeError를 상속한 예외 클래스 정의
다음은 RuntimeError를 상속하는 예외 클래스의 예입니다. 여기서는 Networkerror라는 클래스를 새로 정의하며, 이 클래스는 RuntimeError의 하위 클래스입니다. 예외가 발생(caught)했을 때 보다 구체적인 정보를 전달해야 하는 상황에서 이러한 방식이 특히 유용합니다.
class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg사용자 정의 예외 발생 및 처리하기
위와 같이 클래스를 정의한 후에는 다음과 같이 예외를 직접 발생시키고 처리할 수 있습니다.
try:
raise Networkerror("Bad hostname")
except Networkerror as e:
print(e.args)코드 동작 방식
try 블록 안에서 raise 문을 통해 사용자 정의 예외인 Networkerror가 발생되며, 이어지는 except 블록에서 해당 예외를 잡아(catch) 처리합니다. 변수 e는 Networkerror 클래스의 인스턴스를 참조하며, e.args를 통해 예외 생성 시 전달한 메시지("Bad hostname")에 접근할 수 있습니다.
참고로 위 예제는 최신 Python 3 문법(as e, print())으로 작성되었습니다. 이처럼 사용자 정의 예외를 활용하면 단순한 내장 예외보다 훨씬 구체적인 오류 정보를 제공할 수 있어, 디버깅과 코드 유지보수에 큰 도움이 됩니다.