X エラーハンドラダイアログ

X エラーハンドラダイアログでは、ツールキットで発生するさまざまな X エラーと Xt エラーを処理する関数を指定できます。

4 種類のエラーハンドラと警告ハンドラを登録できます。

X エラーハンドラは、下位レベルの X ライブラリ (Xlib) が出力する XErrorEvent イベントの捕捉を目的としてプログラマが指定できる関数です。 デフォルトの X エラーハンドラは、通常、エラーメッセージを標準エラーストリームにログした後アプリケーションプログラムを終了します。 読み取り専用のカラーマップ内のピクセルを解放しようとしたときに発生する X_FreeColors エラーをはじめとする一部のエラーは致命的ではなく、デフォルトの Xlib エラーハンドラは当然ながら思い切った動作を行います。こういった状況では、プログラムが動作を続行すべきでない理由はありません。 実際、X-Designer は、このエラーだけは黙って無視する X エラーハンドラをインストールします。 用意されているテキストフィールドにルーチンの名前を入力するだけで、アプリケーション固有の X エラーハンドラをインストールすることができます。

X I/O エラーハンドラは、X I/O エラーの捕捉を目的としてプログラマが指定できる関数です。 この種のエラーは通常 X サーバーとの接続に関係しているので、アプリケーションは通常の場合存続不能となります。 独自のエラーハンドラをインストールすれば、こういった非常時にアプリケーションを救うことができます。 X-Designer には、".crash" 拡張子を持つファイルに現在のデザインを保存するハンドラが備わっています。 上記同様、エラーハンドラをインストールするには用意されたテキストフィールドに関数名を入力するだけでよいのです。

Xt エラーハンドラは、中間レベルの X ツールキットイントリンシクスライブラリからのエラーを捕捉するルーチンです。 Xt エラーは通常、致命的ではないという点で Xlib エラーと異なっています。 Xt のデフォルトエラーハンドラは、国際化が多少図られてはきたものの依然として少し謎めいたメッセージが入った警告ダイアログをポップアップ表示します。 読者のアプリケーションのユーザーはコンピュータや X に精通しているとはかぎらないので、デフォルト動作にユーザーが怯えなくて済むよう、こういったエラーは黙ってログに記録するようにデフォルト動作を変更してもよいでしょう。

Xt 警告ハンドラは Xt エラーハンドラとほとんど同じですが、メッセージの論理ステータスだけが異なります。 ここでも、特定のメッセージを処理する独自のルーチンをインストールすることにより、これらのメッセージをユーザーから隠すようにデフォルトのツールキット動作を変更することができます。

いずれの場合にも、スタブファイルに指定したハンドラのプロトタイプを X-Designer が生成します。 コールバック、イベントハンドラをはじめ、インタフェースを通して追加したその他の X 関数を編集するのとまったく同じように、「コードを編集」ボタンを押すことによって関数をインライン編集できます。

XSetErrorHandler(3X)、XSetIOErrorHandler(3X)、 XtAppSetErrorHandler(3X)、 XtAppSetWarningHandler(3X) の詳細については、X マニュアルを参照してください。

関連項目: