Eclipseにはエラー情報を表示するエラー・ログビューがありますが、そのビューの使い方です。
エラー・ログビュー
その詳細画面
このビューにエラー内容を表示するには以下の記述をすればよいようです。
IStatus status = new Status(IStatus.ERROR, SamplePlugin .getPluginId(), IStatus.OK, "メッセージ", new Exception("エラーメッセージ")); SamplePlugin.getDefault().getLog().log(status);
2行目のlogメソッドが呼ばれたときに、与えられたstatus(IStatusの実装クラス)オブジェクトの内容をログに出力します。Statusオブジェクトはエラーなどの状況を格納したクラスです。コンストラクタの引数の意味は以下の通り。
/** * Creates a new status object. The created status has no children. * * @param severity the severity; one of <code>OK</code>, <code>ERROR</code>, * <code>INFO</code>, <code>WARNING</code>, or <code>CANCEL</code> * @param pluginId the unique identifier of the relevant plug-in * @param code the plug-in-specific status code, or <code>OK</code> * @param message a human-readable message, localized to the * current locale * @param exception a low-level exception, or <code>null</code> if not * applicable */ public Status(int severity, String pluginId, int code, String message, Throwable exception)
さて、エラー・ログビューは重要度やメッセージなどの項目がありますが、各項目はStatusオブジェクトの値に対応してるみたいです。具体的には以下のような対応になっています。
このようにログに出力したい内容をStatusに格納してあげればよいわけですね。
MultiStatus?とは、複数のエラーを同時に扱う場合に使用するStatusの拡張クラスです。このクラスは内部に複数のStatusクラスを格納することができます。具体的なコードは以下の通り。
MultiStatus mStatus = new MultiStatus(SamplePlugin .getPluginId(), IStatus.OK, "マルチステータスのメッセージ", new Exception("マルチのエラーメッセージ")); IStatus status = new Status(IStatus.ERROR, SamplePlugin .getPluginId(), IStatus.OK, "メッセージ1", new Exception( "エラーメッセージ1")); mStatus.add(status); status = new Status(IStatus.INFO, SamplePlugin.getPluginId(), IStatus.OK, "メッセージ2", new Exception("エラーメッセージ2")); mStatus.add(status); SamplePlugin.getDefault().getLog().log(mStatus);
この出力結果は以下のようになります。
EclipseはStatusオブジェクトを使用したエラーダイアログ表示機能があります。エラーダイアログは、
org.eclipse.jface.dialogs.ErrorDialog
というクラスを用います。
上でやったようにMultiStatus?のオブジェクトがあったとき、
MultiStatus mStatus = new MultiStatus(SamplePlugin .getPluginId(), IStatus.OK, "マルチステータスのメッセージ", new Exception("マルチのエラーメッセージ")); IStatus status = new Status(IStatus.ERROR, SamplePlugin .getPluginId(), IStatus.OK, "メッセージ1", new Exception( "エラーメッセージ1")); mStatus.add(status); status = new Status(IStatus.INFO, SamplePlugin.getPluginId(), IStatus.OK, "メッセージ2", new Exception("エラーメッセージ2")); mStatus.add(status); Shell shell = getSite().getWorkbenchWindow().getShell(); ErrorDialog.openError(shell, null, null, mStatus); <-ダイアログ表示処理
とすると、以下のようなエラーダイアログが表示されます。
#ref(): File not found: "error01.png" at page "Eclipse/プラグイン開発のTIPS集/エラーログの制御"
更にこのダイアログには詳細ボタンがあり、それをクリックすると以下の画面が表示されます。
#ref(): File not found: "error02.png" at page "Eclipse/プラグイン開発のTIPS集/エラーログの制御"
メイン部分のメッセージは、MultiStatus?の第3引数の文字列、詳細部分のメッセージは、
MutliStatusの例外メッセージ |--- なかの1個目のStatusクラスの第3引数の文字列 |--- なかの1個目のStatusクラスの例外クラスのメッセージ |--- なかの2個目のStatusクラスの第3引数の文字列 |--- なかの2個目のStatusクラスの例外クラスのメッセージ |--- ......
となります。
ErrorDialog.openError(shell, null, null, mStatus);
のnullの箇所に文字を設定することで、ちょっとですが表示を変更することができます。
#ref(): File not found: "error03.png" at page "Eclipse/プラグイン開発のTIPS集/エラーログの制御"
また、もろもろのStatusクラスの引数のうち、例外クラスを受け取る箇所をnullにしてみると、こんな感じになります。
#ref(): File not found: "error04.png" at page "Eclipse/プラグイン開発のTIPS集/エラーログの制御"
この記事は
現在のアクセス:17649