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