python - Python 3:在异常中引发异常
问题描述
下面的代码是不好的做法吗?它按我想要的方式工作,但找不到在另一个异常中引发异常的任何其他示例。如果这是一种不好的做法,那么理想的方法是什么?
这段代码在我的低级处理程序中,我希望对代码 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}")
解决方案
推荐阅读
- c++ - 在 Visual Studio 中运行它们的一种配置
- angular - 如何在 DOM Element 和 Angular 之间创建映射
- c# - Interop.Excel - 使用 output.,Rows[i].Delete() 将行向上移动,以便 for 循环不会检查最近移动的行
- vue.js - 如何向 Vue 模块和实例添加自定义属性
- java - 如何将备用元素添加到字符串数组
- microsoft-graph-api - /me/activities 请求 Microsoft Graph Explorer 成功 200 响应,但“值”为空:[]
- authorization - 基于声明的授权是否适合单个资源
- java - 需要帮助来理解字符串长度逻辑
- unit-testing - GitLab 中的代码覆盖率始终未知
- apache-kafka - 有没有办法使用千分尺在电报中获取卡夫卡流和骆驼指标