wks*_*rtz 29 python logging exception
人们过去常常在Python中捕获,记录和报告多个数据验证错误?
我正在Python 3中构建一个应用程序,它首先验证输入数据然后处理它.第一步报告错误是程序预期功能的一部分,因此我不希望我的验证器放弃第一个异常.特别是,数据是表格式的,我希望能够返回 - 而不是引发 - 表格的每一行都没有验证.
几年前的一次论坛讨论考虑了多种解决方案,包括以下内容,这对我来说似乎是最干净的:
errors = []
for item in data:
try:
process(item)
except ValidationError as e:
errors.append(e)
if errors:
raise MultipleValidationErrors(errors)
Run Code Online (Sandbox Code Playgroud)
其中MultipleValidationErrors
类需要有一个适当的__str__
方法来列出所有有用的信息ValidationErrors
在里面.
其他人建议使用该traceback
模块,但由于我想要捕获的异常是数据验证错误而不是程序错误,这似乎是不合适的.但是,获取所logging
涉及的模块可能是合适的.
我在C++和Python中都使用过这个习惯用法.这是我所知道的最干净的解决方案,当你想要的是一个例外,而不是一个日志消息.它的缺点是组合异常通常会占用线性空间,这在处理具有许多错误的大型数据集时可能会出现问题.
归档时间: |
|
查看次数: |
5053 次 |
最近记录: |