例外を無視するtry-exceptの使い方

Pythonでは、try-except構文を使うことで例外処理が可能です。しかし、単にexcept:と書いて全ての例外を無視するのは推奨されません。特にSystemExitKeyboardInterruptといった重要な例外も捕捉してしまうため、重大なエラーの見逃しにつながる可能性があります。

例外を特定して無視する

例えば、ファイルやディレクトリの操作でOSErrorのみ無視したい場合、以下のように書くのが安全です。

try:
    shutil.rmtree('path')
except OSError:
    pass

このように特定の例外を捕捉することで、他の例外は引き続き処理されます。

Python 3.4以降での便利な方法: suppress()

Python 3.4以降では、contextlib.suppress()を使うことで、指定した例外を簡単に無視することができます。これにより、コードがより簡潔になります。

from contextlib import suppress
with suppress(FileNotFoundError):
    shutil.rmtree('nonexistent_dir')

この方法では、指定した例外が発生した際にプログラムが停止せず、そのまま次の処理に移ることができます。

注意点

例外を無視する場合も、その例外がどのようなエラーを引き起こすかを理解した上で適用することが重要です。すべての例外を一括で無視するのは推奨されず、適切なエラー処理を行うことで、コードの信頼性と可読性が向上します。