【发布时间】:2021-07-03 23:07:37
【问题描述】:
一个简单的例子来说明我的意思,假设我有 3 个 .py 文件(file1、file2、file3)为我执行不同的任务,并且我需要在每一步都记录错误,这是正确的方法吗是这样做还是有其他可以遵循的最佳实践?
file1.py:
def some_function(some_var):
try:
if some_var == 0:
raise ValueError("Can't be zero")
else:
return 1
except ValueError:
raise
file2.py
import file1
def some_other_fn(some_other_var):
try:
return file1.some_function(some_other_var)
except:
raise
file3.py
import file2
import traceback
try:
res = f2.some_other_fn(0)
except:
# handle err
print(traceback.format_exc())
当然,另一个问题是,当我重新提出我在 file1 中可能遇到的多种类型的错误(比如说 4+)时,我是否应该在不同的文件中捕获相同的 4 个错误?这似乎是多余的代码。有没有办法让我知道在 file3 中 file1 发生了什么样的错误,而无需在 file2 和 file3 中都明确写入except ValueError?
请注意,file1和file2不能退出,file3是主控制流,其他函数必须返回。
【问题讨论】:
标签: python python-3.x error-handling error-logging try-except