« CoreExceptionとIStatus | トップページ | エラーログの出力 »

2004.03.26

エラーダイアログの表示

CoreExceptionとIStatus」で紹介したように,Eclipseでは例外のほとんどがCoreExceptionとIStatusの組み合わせで成り立っている。一般的に,例外が発生したときには,ユーザにそのことを通知するためのダイアログを表示する。CoreException例外の発生時には,それが持つIStatusオブジェクトの内容をエラーダイアログに表示することになるが,EclipseではIStatusオブジェクトの内容をエラーダイアログとして簡単に表示するためのErrorDialogクラスが用意されている

ErrorDialogを使ってIStatusオブジェクトの内容をエラーダイアログとして表示する手順は,非常に簡単である。

  try {
    ...
  } catch(CoreException e) {
    Shell parentShell = ...;
    IStatus status = e.getStatus();
    ErrorDialog.openError(
      parentShell, "エラー", "エラーメッセージ", status);
  }

まず,ダイアログの表示に必要な,ダイアログの親となるShellオブジェクトを取得する。そして,キャッチしたCoreException例外オブジェクトのgetStatusメソッドを使って,IStatusオブジェクトを得る。あとは,ErrorDialogクラスのクラスメソッドであるopenErrorメソッドに「Shellオブジェクト」「タイトルに表示する文字列」「エラーの概要を示すメッセージ」「IStatusオブジェクト」を渡して呼び出せば,以下のようなエラーダイアログが表示される。「Reason」のところに表示されているメッセージは,IStatusオブジェクトのgetMessageメソッドの戻り値である。

error-dialog.gif

もし,openErrorメソッドに渡しているIStatusオブジェクトのエラーレベル(正確にはステータスレベル)がIStatus.ERROR以外だった場合は,ちゃんとそれ相応のダイアログが表示される(ダイアログのアイコンが変わる)。

[IStatus.WARNINGだった場合]
warning-dialog.gif

[IStatus.INFOだった場合]
information-dialog.gif

うまくできていることに,IStatus.OKだった場合は,openErrorメソッドを呼び出してもダイアログは表示されない。「OKなんだからエラーダイアログを表示しなくてもいいじゃん」っていう考えだと思われる。

ちなみに,ダイアログの親となるShellオブジェクトを渡すところでnullを渡しても,一応「親のいないダイアログ」が表示されるが,あまりお勧めできることではない。これについては「Shellオブジェクトの取得」を参照されたし。

|

« CoreExceptionとIStatus | トップページ | エラーログの出力 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: エラーダイアログの表示:

« CoreExceptionとIStatus | トップページ | エラーログの出力 »