Python - try-except warning



我最近在PyCharm编辑器中用Python进行编码时遇到了一个问题。每当我做了一个try-except语句时,出于某种原因,我都会收到一条警告(单词下面的黄线:except(

这里有一个例子:

s = "Text"
try:
print(s[2])
except:
print("There is no character at that index")

当我在PyCharm中编写这个确切的代码时,我会收到一个警告。当我把鼠标悬停在警告上时,它会说:

Too broad exception clause 
PEP 8: E722 do not use bare 'except'

知道为什么会发生这种事吗?

捕获异常时,尽可能提及特定的异常,而不是使用空的except:子句。

例如:

try:
import platform_specific_module
except ImportError:
platform_specific_module = None

一个空的except:子句将捕获SystemExit和KeyboardInterrupt异常,这使得用Control-C中断程序变得更加困难,并且可以掩盖其他问题。如果要捕获所有表示程序错误的异常,请使用Exception:(bare-Exception等效于except-BaseException:(。

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

异常处理程序是否将打印或记录回溯;至少用户将意识到已经发生了错误。

如果代码需要进行一些清理工作,但随后让异常通过提升向上传播。尝试最后可能是处理这种情况的更好方法。

最新更新