入出力・エラーと例外・クラス・標準ライブラリ・対話環境(7,8,9,10,14章)
低レベルの例外処理中に別の例外を送出する際、元の例外情報を保持したまま新しい例外を送出したい。このときraise NewError("...") from original_error のように記述する構文の目的として、最も適切なものはどれか。
- Araise ... from ... を使うと、from句に指定した元の例外の情報は破棄される
- ✓raise ... from ... を使うと、元の例外情報を__cause__属性として保持したまま新しい例外を送出できる
- Craise ... from ... はtry文のfinally節の中でのみ使用できる構文である
- Draise ... from ... を使うと例外は送出されず、警告として扱われる
解説
raise ... from ... という構文は例外連鎖(exception chaining)を明示的に行うもので、新しい例外の__cause__属性に元の例外オブジェクトを設定し、トレースバックに両方の情報が表示されるようにする。
根拠8章 エラーと例外(例外の連鎖)