有关异常处理的文档往往专注于使用特定的异常类型--这总体上是一个很好的建议.

然而,有时我想运行一些Python代码,under no circumstances会引发未处理的异常并停止程序运行:

例如,图形应用程序可能运行用户定义的脚本.我不知道该脚本会触发哪些错误,因此判断特定错误没有用:

try:
    run_script_file(filepath)
except:
    import traceback
    print("Script:", filepath, "failed with error!")
    traceback.print_exc()

这是可行的,但代码判断工具警告不应使用bare except.虽然我可以在每种情况下压制警告,但我正在考虑使用except BaseException:来压制警告.


裸的except: guaranteed是否相当于except BaseException:,或者裸的例外可能会捕获BaseException不会捕获的异常,是否存在细微差异?

推荐答案

documentation:

在Python中,所有异常都必须是源自Base异常的类的实例.

PEP8 (emphasis mine)中还指出:

光秃秃的except:Clause将捕获SystemExit和KeyboardDeliverable异常,从而使使用Control-C中断程序变得更加困难,并且可以掩盖其他问题.如果您想捕获所有表示程序错误的异常,请使用except Exception:(bare except is equivalent to 102).

所以,是的,它们是等效的.

Python相关问答推荐

Django:如何将一个模型的唯一实例创建为另一个模型中的字段

修剪Python框架中的尾随NaN值

带有计数值的Pandas数据帧

取相框中一列的第二位数字

如何计算部分聚合数据的统计数据

在Python中,什么表达相当于0x1.0p-53?

在两极中实施频率编码

如何使用Selenium访问svg对象内部的元素

如何根据条件在多指标框架上进行groupby

使用Keras的线性回归参数估计

由于NEP 50,向uint 8添加-256的代码是否会在numpy 2中失败?

韦尔福德方差与Numpy方差不同

海运图:调整行和列标签

数据抓取失败:寻求帮助

不允许访问非IPM文件夹

多处理队列在与Forking http.server一起使用时随机跳过项目

启用/禁用shiny 的自动重新加载

将scipy. sparse矩阵直接保存为常规txt文件

使用Python从rotowire中抓取MLB每日阵容

Python—转换日期:价目表到新行