【问题标题】:Python - try-except warningPython - 尝试除外警告
【发布时间】:2021-03-07 03:41:34
【问题描述】:

我最近在 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 将捕获所有类型的异常,根据 PEP8,不鼓励这样做。具体一点是个好习惯。在您的情况下,您只想通过以下方式捕获 IndexError 异常:except IndexError:

标签: python warnings try-except


【解决方案1】:

在捕获异常时,尽可能提及具体的异常,而不是使用裸的 except: 子句。

例如:

try:
    import platform_specific_module
except ImportError:
    platform_specific_module = None

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

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

如果异常处理程序将打印或记录回溯;至少用户会知道发生了错误。

如果代码需要做一些清理工作,然后让异常通过 raise 向上传播。 try...finally 可能是处理这种情况的更好方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 2018-07-04
    • 2018-07-19
    • 2016-06-21
    相关资源
    最近更新 更多