python - 在 python 中以不同方式处理语言错误和运行时错误

标签 python static-analysis

我在 python 中有一个大小合适的代码,我对其进行了一些更改,现在我发现在执行代码时,脚本不会解决诸如缺少函数定义之类的语言错误。 我认为不可能继续运行缺少函数定义的脚本。我在一个地方使用了一个函数,目的是在运行之前实际定义该函数,但忘记了它并运行了代码。令我惊讶的是,我刚刚将以下行打印到控制台 -

Worker instance has no attribute update_parse_status

Worker 是我应该添加 update_parse_status() 调用的类。

我意识到我有一个尝试和一个通用的捕获所有异常处理程序围绕有问题的代码,如下所示 -

try:
    Worker.update_parse_status()
except Exception as e:
    print e

所以 python 只是抛出一个 AttributeError 并且我在不知不觉中捕获了它。它给我上了宝贵的一课,那就是不要捕获所有异常处理程序。同样来自编译语言是否有更好的方法来处理这个问题?我的意思是,我可以如何确保 python 在出现语言错误时退出吗?至少清除明显的错误将非常有帮助(尽管我知道糟糕的代码让我陷入了这种情况)。

最佳答案

在 python 中,所有名称都会在运行时查找。因此,您所说的“语言”错误与运行时错误没有什么不同。

这使得 Python 与许多其他语言不同。这一事实的优点之一是,您可以轻松地自定义查找名称的方式(例如,通过覆盖类的 __getattr__)。

您可以使用分析器(例如 pyflakes 非常酷,但还有很多其他分析器)在运行程序之前检测一些错误,但没有工具能够检测到所有错误。

关于python - 在 python 中以不同方式处理语言错误和运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424098/

相关文章:

python - 如何仅展平内部列表?

python - 从post请求中获取数据并创建新的对象模型错误: 'dict' object has no attribute 'data'

python - 如何在 Python 中用求和编写包含许多 AND 和 OR 的查询?

python - 如何判断光标的当前形状?

assembly - 汇编语言的静态代码分析

c - 是否有静态分析工具来计算使用定义链?

python - 在Python中创建Singleton类并计算实例数量

android - 如何找到 Android 应用程序使用的广告库

.net - nStatic发生了什么事?

configuration - Sonar - 如何使用 sonnar-runner 创建子项目