スクリプトのトップレベルで例外句を作成していますが、発生したエラーをログに記録するだけです。面倒なことに、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)
このハンドラーに何か問題がありますか?そうでない場合、どうやってPyCharmにそれについて黙らせるように伝えることができますか?
Joran によるコメントから:# noinspection PyBroadException
PyCharmに、この例外条項で問題ないことを伝えます。これはもともと探していたものですが、提案メニューの 検査を抑制する のオプションがありませんでした。
import logging
logging.basicConfig()
# noinspection PyBroadException
try:
raise RuntimeError('Bad stuff happened.')
except Exception:
logging.error('Failed.', exc_info=True)
例外をログに記録したくなく、PyCharmに文句を言わずにそれを抑制したいだけの場合、Python 3.4: contextlib.suppress()
に新しい機能があります。 。
import contextlib
with contextlib.suppress(Exception):
raise RuntimeError('Bad stuff happened.')
これはこれと同等です:
try:
raise RuntimeError('Bad stuff happened.')
except Exception:
pass
PyCharmのバージョンについてはわかりません(私の場合は2019.2です)が、このPyCharmインスペクションを[ファイル]> [設定]> [エディター]> [インスペクション]で無効にし、「広すぎる」と入力することを強くお勧めします。 Pythonタブで、 "too broad exceptions clauses"の選択を解除してそれらを回避します。この方法でPyCharmが正しい式検査を表示すると思います