zpl*_*zzi 5 python static-analysis exception-handling
我正在尝试用Python编写高度可靠的代码。我遇到的最常见问题是,运行一段时间后,将出现一些边缘情况并引发一个我未处理的异常。这在使用外部库时最经常发生-不阅读源代码,我不知道一种简单的方法来获取使用特定库函数时可能引发的所有异常的列表,因此很难知道要处理什么。我知道使用包罗万象的处理程序是一种不好的做法,所以我没有这样做。
有一个好的解决方案吗?似乎静态分析工具应该可以检查是否处理了所有异常,但是我还没有找到。是否存在?如果没有,为什么?(这不可能吗?不是一个好主意?等)出于上述原因,我特别希望它分析导入的代码。
“使用包罗万象的处理程序是不好的做法”来忽略异常:
我们的网络服务有一个 except 来包裹主循环。
except:
log_exception()
attempt_recovery()
Run Code Online (Sandbox Code Playgroud)
这很好,因为它会(必要)通知我们意外错误,然后尝试恢复(不必要)。然后我们可以查看这些日志并找出问题所在,以便我们可以防止它再次遇到一般异常。
这是你想要避免的:
except:
pass
Run Code Online (Sandbox Code Playgroud)
因为它忽略了错误...那么您不知道发生了错误,并且您的数据可能被熊损坏/无效/消失/窃取。您的服务器可能已启动/关闭/着火。我们不知道,因为我们忽略了异常。
Python 不需要注册可能抛出的异常,因此不会检查模块可能抛出的所有异常,但大多数都会让您了解应该准备在文档中处理哪些异常。根据您的服务,当它遇到未处理的异常时,您可能需要:
注意到趋势了吗?动作会改变,但你永远不想忽视它。
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |