我最近在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"子句的使用限制在两种情况下:
异常处理程序是否将打印或记录回溯;至少用户将意识到已经发生了错误。
如果代码需要进行一些清理工作,但随后让异常通过提升向上传播。尝试最后可能是处理这种情况的更好方法。