bgerror - バックグラウンドエラーを処理します。
bgerror message
bgerror コマンドは Tcl
のビルトインの一部としては存在しませんが、(このコマンドを使えば)個々のアプリケーション、またはユーザーはバックグラウンドエラーを処理したい時に、bgerror
コマンドを(Tclプロシージャを定義するように)定義することができます。
バックグラウンドエラーとはイベントハンドラ、あるいはアプリケーションに直接関係ない他のコマンドの実行時に発生するエラーです。例えば、
afterで指定されたコマンドを実行している時に発生するエラーは一種のバックグラウンドエラーです。非バックグラウンドエラーが発生すれば、ネストしたTclコマンドの実行によって、エラーは簡単にアプリケーションのトップレベルコードまで返されますので、アプリケーションが様々な方法でエラーを処理できます。バックグラウンドエラーが発生する場合は、Tclライブラリ内で処理が終わっているため、Tclがエラーを報告する直接の方法がありません。
Tclがバックグラウンドエラーを検出した場合、エラーに関する情報を保存した後にアイドルイベントハンドラとしてbgerrorコマンドを呼び出します。bgerrorを呼び出す前に、TclはerrorInfo変数とerrorCode変数にエラー発生時の情報を保存します。その後bgerrorをこのエラーメッセージを唯一の引数として呼び出します。Tclはアプリケーションがbgerrorコマンドを呼び出し、そして、アプリケーションがなんらかの方法でbgerrorコマンドの意味を理解できるものと仮定します。エラーが生成されない限り、Tclはbgerrorコマンドによって返された全ての結果
を無視します。
別のTclエラーがbgerrorコマンド実行中に発生した場合(
例えばbgerrorコマンドが定義されなかった場合 ) 、Tclはstderrにメッセージを出力することでエラーを報告します。
bgerrorが呼び出される前に複数のバックグラウンドエラーが発生した時、各エラーが発生した順番でbgerrorを呼び出します。bgerrorがブレーク例外で戻る場合は、未処理のエラーをスキップします(bgerrorを呼び出しません)。
Tclはbgerrorに対してデフォルトインプリメントがありませんが、Tkを使うアプリケーションのためのデフォルトbgerrorプロシージャが存在します。このプロシージャがエラーメッセージを含むダイアログ・ボックスを表示させ、ユーザーにどこでエラーが発生したかを示すスタックトレースを確認するチャンスを提供します。さらにスタックトレースをアクセスできるようにするだけでなく、このダイアログ・ボックスにはアプリケーションでカスタマイズできるボタンを配置することもできます。例えば、あるボタンでスタックトレースをファイルに保存することができます。この機能ボタンに関連付けられているデフォルト動作は保存操作です。また、ボタンの動作を再定義することもできます。例えば、
オプションデータベース値ErrorDialog.function.textを設定すれば、ボタンの見出しを指定することができ、*ErrorDialog.function.commandを設定することによって実行させたいコマンドを設定することもできます。コマンドが評価されるとき、スタックトレースの内容テキストはこのコマンドに追加されます。オプションのどちらかが空の文字列に設定された場合、このボタンはダイアログ・ボックスに表示されません。
after, tclvars
background error, reporting
Copyright © 1990-1994 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.
Copyright © 1995-1997 Roger E. Critchlow Jr.
|