有关异常处理的文档往往侧重于使用特定的异常类型——总的来说,这是一个很好的建议。
然而,有时我想运行一些 Python 代码,这些代码在任何情况下都不会引发未处理的异常并阻止程序运行:
例如,图形应用程序可能运行用户定义的脚本。我不知道该脚本可能会触发什么错误,因此检查特定错误没有用:
try:
run_script_file(filepath)
except:
import traceback
print("Script:", filepath, "failed with error!")
traceback.print_exc()
这可行,但代码检查工具警告except
不应使用 bare。虽然我可以在每种情况下抑制警告,但我正在考虑使用except BaseException:
来消除警告。
bareexcept:
是否保证等同于except BaseException:
或是否存在细微差别,其中 bare except 可能会捕获异常 aBaseException
不会?
从文档中:
PEP8 中还指出(强调我的):
所以,是的,它们是等价的。