假设我们有一个服务方法,它通过一个或多个辅助方法执行其业务逻辑,其中每个辅助方法都可能引发一个或多个错误。
因为可能有许多辅助方法总共封装了大量代码,所以我们想要一种方法让使用服务方法的人知道它可以引发的所有错误,而无需阅读每个辅助方法的实现。
为了使这更具体,让我们假设这是在Django上下文中完成的,其中每个视图调用一个服务方法,然后该视图负责捕获服务方法引发的任何错误并为每个返回一个适当的响应给用户。
所以问题是,每个帮助方法可以引发的错误是通过使用try / except重新引发错误来记录的,还是应该在docstring中注明?
例如,哪个更好,service_method_v1或service_method_v2?:
def service_method_v1():
try:
helper_method_1()
except SomeError:
raise
def service_method_v2():
"""
Raises:
SomeError, via helper_method_1()
"""
helper_method_1()
helper_method_1():
raise SomeError
我知道使用try / except时有一些计算开销,但是这个目的让我们假设这在最终用户体验方面可以忽略不计。