Python 3:在异常中引发异常

时间:2018-09-14 13:06:52

标签: python exception-handling

下面的代码是否是错误的做法?它按照我想要的方式工作,但是找不到其他在另一个异常中引发异常的其他示例。如果这是一种不好的做法,那么理想的做法是什么?

此代码位于我的低级处理程序中,我希望对代码HTTP 400/401具有特定的异常-以及对其他HTTP代码具有通用的异常-为了简化我的高级处理程序中的异常处理级别包装器。

理想情况下,应该只有一个HTTP代码与特定消息或子例外匹配的位置。

class APIRequestError(APIError):
    def __init__(self, code=-1, message="N/A"):
        if code == 400:
            raise Exceptions.APIBadRequest(message)
        elif code == 401:
            raise Exceptions.APIAuthentication(message)
        elif code == 404:
            Exception.__init__(self, "HTTP 404 : API resource not found!")
        elif code == 500:
            Exception.__init__(self, "HTTP 500 : Server-side error!")
        else:
            Exception.__init__(self, f"Unhandled HTTP error ({code}).")

class APIBadRequest(APIRequestError):
    def __init__(self, message="N/A"):
        message_out = str(message)[:Exceptions.MSG_MAX]
        Exception.__init__(self, f"Bad API request : {message_out}")

class APIAuthentication(APIRequestError):
    def __init__(self, message="N/A"):
        message_out = str(message)[:Exceptions.MSG_MAX]
        Exception.__init__(self, f"Authentication error : {message_out}")

0 个答案:

没有答案