例外チェーニングと再スロー
メニューを表示するにはスワイプしてください
Pythonでエラー処理を行う際、ある例外をキャッチした後に別の例外を発生させる必要が生じる場合があります。このような場合、元のエラーのコンテキストを保持することが重要です。Pythonの例外チェーン機能は、fromキーワードを使用してこれを実現します。例外を明示的にチェーンすることで、より詳細なトレースバックが提供され、障害に至るまでのエラーの流れを理解しやすくなります。
例えば、ファイルからの入力を処理する関数を作成しているとします。ファイルの読み込み中にエラーが発生した場合、アプリケーションのロジックに適したカスタム例外を発生させたいことがありますが、同時に元のエラー情報も保持したい場合があります。raise NewException() from original_exceptionを使用することで、これを実現できます。
例外の再送出も関連するテクニックです。例外をキャッチした後にクリーンアップやログ記録などを行い、その後例外を上位に伝播させたい場合、例外を指定せずに単にraiseを使用することで、最後にキャッチした例外を再送出できます。例外チェーンと再送出の両方は、堅牢でデバッグしやすいコードを書くために有用です。
12345678910111213141516# Simple exception chaining and re-raising example def divide(a, b): try: return a / b except ZeroDivisionError as err: # Chain a new exception to the original raise ValueError("Cannot divide by zero") from err try: divide(5, 0) except ValueError as e: print("Caught ValueError:") import traceback traceback.print_exc() print("\nRe-raising the exception...\n") raise
このコードは、Pythonにおけるシンプルな例外チェーンと再送出の例を示しています。divide関数は2つの数値の除算を試み、ZeroDivisionErrorをキャッチして、明確なメッセージ付きの新しいValueErrorにチェーンします。外側のtry-exceptブロックはValueErrorをキャッチし、両方の例外を示す完全なトレースバックを出力し、その後例外を再送出してさらに伝播させます。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください