
何が悪かった?
「
sys
」から例外について学ぶ
標準ライブラリには、インタプリタの内部(実行時に利用できる変数と関数)にアクセスでき
るモジュール
sys
があります。
その関数の
1
つが
exc_info
で、処理中の例外に関する情報を提供します。
exc_info
を
呼び出すと、
3
つの値のタプルを返します。
1
番目の値は例外の型、
2
番目は例外の値の詳細、
3
番目は(必要な場合に)トレースバックメッセージを入手できるトレースバックオブジェク
トです。該当する例外がないときには、それぞれの値が
None
のタプルを返します(
(None,
None, None)
のようになります)。
上のことがわかったので、
>>>
シェルで実験してみましょう。次の
IDLE
セッションでは、常
に失敗するコードを書きました(ゼロ除算は御法度です)。
except
ブロックでは、
sys.exc_
info
関数を使って、現在発生している例外に関するデータを表示します。
sys
については、
https://docs.
python.jp/3/
library/sys.html
を参照のこと。
トレースバックオブジェクトをさらに詳しく調べて何が起こっているのかを知るこ
ともできますが、これでもすでに作業が多すぎると感じますよね。調べたいのは、発生
した例外の種類だけです。
例外の種類が簡単にわかるように、
Python
は
sys.exc_info
関数が返す情報を取
得しやすくするように
try/except
構文を拡張しています。
sys
モジュールをイン
ポートし忘れたり ...