広すぎる例外処理

広すぎる例外処理

説明

型を指定しない except や except Exception、BaseException を捕捉する except は、想定外のエラーまでまとめて処理し、セキュリティ上の失敗やプログラムの不具合を隠すおそれがあります。

想定される影響

  • 認証、入力検証、ファイル操作の失敗を誤って処理する可能性があります。
  • 運用上の障害や攻撃の兆候が、一般的なエラーに埋もれるおそれがあります。

対処方法

  • 回復できる具体的な例外だけを捕捉します。
  • 想定外の例外はログに記録して再送出するか、共通のエラー処理層に委ねます。

例

変更前

python
try:
    return int(value)
except Exception:
    return 0

変更後

python
try:
    return int(value)
except ValueError:
    return 0

解説:

  • 変更前: 広すぎるハンドラーは、想定した変換エラー以外の失敗も隠してしまいます。
  • 変更後: 回復できる具体的な例外だけを処理します。

参考資料