Python 3:在异常中引发异常

问题描述 投票:0回答:0

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

这段代码在我的低级处理程序中,我想对代码HTTP 400/401具有特定的异常-以及对其他HTTP代码的泛型异常-以简化高层包装程序中的异常处理( S)。

理想情况下,应该只有一个位置,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}")
python exception-handling
© www.soinside.com 2019 - 2024. All rights reserved.