web-dev-qa-db-ja.com

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)

このハンドラーに何か問題がありますか?そうでない場合、どうやってPyCharmにそれについて黙らせるように伝えることができますか?

21
Don Kirkby

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
29
Don Kirkby

PyCharmのバージョンについてはわかりません(私の場合は2019.2です)が、このPyCharmインスペクションを[ファイル]> [設定]> [エディター]> [インスペクション]で無効にし、「広すぎる」と入力することを強くお勧めします。 Pythonタブで、 "too broad exceptions clauses"の選択を解除してそれらを回避します。この方法でPyCharmが正しい式検査を表示すると思います

0
daniel_serretti