下面的代码是不好的做法吗? 它按照我想要的方式工作,但是找不到其他在另一个异常中引发异常的其他示例。 如果这是一个不好的做法,那么这样做的理想方法是什么?
这段代码在我的低级处理程序中,我想对代码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}")