相关疑难解决方法(0)

在这种情况下如何防止"过于宽泛的异常"?

我得到了一个可能失败的函数列表,如果一个失败,我不希望脚本停止,而是继续下一个函数.

我用这样的东西执行它:

list_of_functions = [f_a,f_b,f_c]
for current_function in list_of_functions:
    try:
        current_function()
    except Exception:
        print(traceback.format_exc())
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它不符合PEP8:

捕获异常时,请尽可能提及特定异常,而不是使用bare except子句.

例如,使用:

try:
    import platform_specific_module
except ImportError:
    platform_specific_module = None
Run Code Online (Sandbox Code Playgroud)

一个裸的except:子句将捕获SystemExit和KeyboardInterrupt异常,使得用Control-C中断程序变得更加困难,并且可以掩盖其他问题.如果要捕获发出程序错误信号的所有异常,请使用除Exception之外的内容:(裸除了除了BaseException之外).

一个好的经验法则是将裸"除"子句的使用限制为两种情况:

如果异常处理程序将打印出来或记录回溯; 至少用户会意识到发生了错误.

如果代码需要做一些清理工作,但随后让异常向上传播并加注.尝试...终于可以更好地处理这种情况.

这个好方法怎么样?

python exception pep8

26
推荐指数
4
解决办法
4万
查看次数

标签 统计

exception ×1

pep8 ×1

python ×1