提问人:ReturnedVoid 提问时间:7/18/2023 最后编辑:ReturnedVoid 更新时间:7/18/2023 访问量:37
包例外的放置位置
Where to put package exceptions
问:
我有一个包“service”,它由两个模块组成:“service.py”和“http.py”。 “service.py”使用“http.py”模块发出 HTTP 请求。 我想要这个界面:
try:
result = service.do(...) # does HTTP call under the hood and returns service-specific result
except ServiceError as exc:
print(exc.as_json()) # {"message": "error", "code": "HTTP_REQUEST_TIMEOUT"}
因此,异常应该是 JSON 可序列化的。
问题是如何组织例外。
- http.py 将有其特定的异常,service.py 将捕获它们并重新引发为 ServiceError(, )
- http.py 将引发单独“errors.py”中定义的 ServiceError,则“service.py”将不处理异常处理
所以一般来说,我们应该通过共享异常将模块耦合到同一个包中,还是让它们完全解耦更好?
P.S. 一个单独的“errors.py”模块看起来像一个代码味,类似于“utils.py”。
答: 暂无答案
评论
service
service
http
service
service.service
service.http
do
http.py
ServiceError
HTTPError
service.py
ServiceError
errors
utils
errors