Blu*_*sky 26 python exception pep8
我得到了一个可能失败的函数列表,如果一个失败,我不希望脚本停止,而是继续下一个函数.
我用这样的东西执行它:
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子句.
例如,使用:
Run Code Online (Sandbox Code Playgroud)try: import platform_specific_module except ImportError: platform_specific_module = None
一个裸的except:子句将捕获SystemExit和KeyboardInterrupt异常,使得用Control-C中断程序变得更加困难,并且可以掩盖其他问题.如果要捕获发出程序错误信号的所有异常,请使用除Exception之外的内容:(裸除了除了BaseException之外).
一个好的经验法则是将裸"除"子句的使用限制为两种情况:
如果异常处理程序将打印出来或记录回溯; 至少用户会意识到发生了错误.
如果代码需要做一些清理工作,但随后让异常向上传播并加注.尝试...终于可以更好地处理这种情况.
这个好方法怎么样?
All*_*adu 54
用这个来欺骗 PEP8:
try:
"""code"""
except (Exception,):
pass
Run Code Online (Sandbox Code Playgroud)
Ed *_*ith 27
您引用的PEP8指南表明,如果您记录错误,可以在您的情况下使用裸异常.我认为你应该涵盖尽可能多的例外情况,知道如何处理,然后记录其余部分pass
,例如
import logging
list_of_functions = [f_a,f_b,f_c]
for current_function in list_of_functions:
try:
current_function()
except KnownException:
raise
except Exception as e:
logging.exception(e)
Run Code Online (Sandbox Code Playgroud)
Hus*_*hen 14
您可以发表评论,就像except Exception as error: # pylint: disable=broad-except
这实际上对我有用一样。我希望它对你有用。
小智 13
我认为在一些罕见的情况下,捕获一般异常是合理的,并且有一种方法可以欺骗 PEP8 检查:
list_of_functions = [f_a,f_b,f_c]
for current_function in list_of_functions:
try:
current_function()
except (ValueError, Exception):
print(traceback.format_exc())
Run Code Online (Sandbox Code Playgroud)
您可以用ValueError
任何其他替换。它对我有用(至少在 PyCharm 中)。
归档时间: |
|
查看次数: |
41902 次 |
最近记录: |