Don*_*kby 23 python exception-handling pycharm
我正在脚本的顶层编写一个异常子句,我只想让它记录发生的任何错误.令人讨厌的是,PyCharm抱怨我是否抓住了Exception.
import logging
logging.basicConfig()
try:
raise RuntimeError('Bad stuff happened.')
except Exception: # <= causes warning: Too broad exception clause
logging.error('Failed.', exc_info=True)
Run Code Online (Sandbox Code Playgroud)
这个处理程序有问题吗?如果没有,我怎么能告诉PyCharm闭嘴呢?
Don*_*kby 30
根据Joran的评论:你可以# noinspection PyBroadException用来告诉PyCharm你对这个例外条款没问题.这是我最初想要的,但我错过了在建议菜单中禁止检查的选项.
import logging
logging.basicConfig()
# noinspection PyBroadException
try:
raise RuntimeError('Bad stuff happened.')
except Exception:
logging.error('Failed.', exc_info=True)
Run Code Online (Sandbox Code Playgroud)
如果您甚至不想记录异常,并且只想在没有PyCharm抱怨的情况下禁止它,那么Python 3.4中就有一个新功能:contextlib.suppress().
import contextlib
with contextlib.suppress(Exception):
raise RuntimeError('Bad stuff happened.')
Run Code Online (Sandbox Code Playgroud)
这相当于:
try:
raise RuntimeError('Bad stuff happened.')
except Exception:
pass
Run Code Online (Sandbox Code Playgroud)
原则上我不愿意关闭警告。
在所呈现的案例中,您很清楚异常是什么。最好是具体的。例如:
Run Code Online (Sandbox Code Playgroud)try: raise RuntimeError("Oops") except RuntimeError as e: print(e, "was handled")将产生“哎呀已处理”。
如果有几个可能的例外,您可以使用两个 except 子句。如果可能存在多种可能的异常,是否应该尝试使用单个 try 块来处理所有内容?重新考虑设计可能会更好!
| 归档时间: |
|
| 查看次数: |
16298 次 |
| 最近记录: |