파이썬에서 제공하는 error 메세지가 아닌 에러 메세지를 추가적으로 생성하고 발생시키는 방법을 설명합니다.

오류 생성

오류는 다음과 같이 파이썬 내장 클래스인 Exception클래스를 상속하여 만들 수 있습니다.

class MyError(Exception):
    pass


그리고 다음과 같이 간단한 코드를 개발해 에러를 일부러 발생시켜보겠습니다.

def test(str):
	if str =='1':
		raise MyError()
	else:
		print("ok")
 
test("0")
test("1")

위를 실행할 경우 0은 출력이 되지만 1에서는 MyError()가 발생합니다.


만약 오류메세지를 이용하고 싶다면 다음처럼 예외처리를 합니다.

try:
    test("0")
    test("1")
except MyError as e:
    print(e)


실행을 하면 아무런 오류메세지가 출력이 되지 않습니다. 위의 MyError에 __str__ method를 구현해야 오류메세지를 출력할 수 있습니다. 

lass MyError(Exception):
    def __str__(self):
        return "custom error message"


에러 발생시점에 오류 메세지를 전달하고 싶으면 다음과 같이 수정합니다.

# 방법1
class CustomError(Exception):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg
 
def test(str):
	if str =='1':
		raise MyError("1test")
	else:
		print("ok")
 
try:
    test("0")
    test("1")
except MyError as e:
    print(e)
 
# 방법2
class CustomError(Exception):
    def __init__(self, msg):
        super().__init__(msg)
 
# 호출 부분 동일


Exception으로 떨어지는 에러 메세지는 타입이 각 구현된 에러 클래스로 떨어지기 때문에 json으로 파싱이 되지 않습니다. 따라서 except에서 나온 에러메세지를 json으로 묶을 경우, str(error message)로 먼저 문자열로 변환한 다음 파싱을 진행해야 합니다.

+ Recent posts