# 11.3 `cgitb` -- CGI スクリプトのトレースバック管理機構

バージョン2.2 以降で新規追加された 仕様です。

`cgitb` モジュールでは、Python スクリプトのための特殊な例外処理を 提供します。(実はこの説明は少し的外れです。このモジュールはもともと 徹底的なトレースバック情報を CGI スクリプトで生成した HTML 内に表示 するための設計されました。その後この情報を平文テキストでも 表示できるように一般化されています。) このモジュールの有効化後に捕捉されない例外が生じた場合、 詳細で書式化された報告が Web ブラウザに送信されます。この報告には 各レベルにおけるソースコードの抜粋が示されたトレースバックと、現在動作 している関数の引数やローカルな変数が収められており、問題のデバッグを 助けます。オプションとして、この情報をブラウザに送信する代わりに ファイルに保存することもできます。

この機能を有効化するためには、単に自作の CGI スクリプトの最初に以下の一行を 追加します:

    import cgitb; cgitb.enable()

`enable()` 関数のオプションは、報告をブラウザに表示するか どうかと、後で解析するためにファイルに報告をログ記録するかどうかを 制御します。

`enable`( | [display[, logdir[, context [, format]]]])

  この関数は、``sys`.excepthook` を設定することで、 インタプリタの標準の例外処理を `cgitb` モジュールに肩代わり させるようにします。

  オプションの引数 display は標準で `1` になっており、 この値は `0` にしてトレースバックをブラウザに送らないように抑制する こともできます。引数 logdir はログファイルを配置する ディレクトリです。オプションの引数 context は、トレースバック の中で現在の行の周辺の何行を表示するかです; この値は標準で `5` です。 オプションの引数 format が `"html"` の場合、出力は HTML に書式化されます。その他の値を指定すると平文テキストの出力を 強制します。デフォルトの値は `"html"` です。

`handler`( | [info])

  この関数は標準の設定 (ブラウザに報告を表示しますがファイルには ログを書き込みません) を使って例外を処理します。 この関数は、例外を捕捉した際に `cgitb` を使って報告 したい場合に使うことができます。 オプションの info 引数は、例外の型、例外の値、トレースバック オブジェクトからなる 3 要素のタプルでなければなりません。これは ``sys`.exc_info()` によって返される値と全く 同じです。info 引数が与えられていない場合、現在の 例外は ``sys`.exc_info()` から取得されます。