起動されたプログラムによるエラーの処理

独自のタイプの起動構成を定義した場合、プログラムの実行中に発生するエラーまたはその他の状況情報を処理することが必要になると思われます。 例えば、起動中に特定タイプのエラーが発生した場合にユーザーに向けてプロンプトまたは警告を表示したり、またはプログラム内の特定の状況変更に関して情報メッセージを表示するなどです。 UI 処理とコア機能とは分離しておくとよいので、起動代行から状況処理クラスへの直接参照は避けた方がよいでしょう。

この問題は、org.eclipse.debug.core.statusHandlers 拡張ポイントによって示されています。 これにより、状況ハンドラーを特定の状況コードに関連付けできるようになります。 この拡張ポイントを使用すると、別のプラグインからのさまざまな状況コードに対する固有のハンドラーを登録すると同時に、起動代行およびコア・クラス内にすべての考えられる状況およびエラー・コードを定義できます。

拡張ポイントは、状況ハンドラーと起動構成の間の関連を指定しません。 起動代行の実装により、エラーの検出、適切な状況ハンドラーの検索、およびその起動が決まります。 拡張は、単にレジストリーを提供して、状況ハンドラーが特定の状況コードを検出できるようにします。 DebugPlugin は、特定の状況ハンドラーを取得するユーティリティー・メソッドを提供します。

IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(status);

状況ハンドラーは、IStatusHandler を実装する必要があります。 状況処理クラスは、それに関連付けられた状況コード、および状況コードを生成することが予想されるプラグインとともに、拡張定義で指定されます。

次のマークアップは、Java ツールが状況ハンドラーを宣言する方法を示しています。

<extension point = "org.eclipse.debug.core.statusHandlers">
	<statusHandler
		id="org.eclipse.jdt.debug.ui.statusHandler.vmConnectTimeout"
		class="org.eclipse.jdt.internal.debug.ui.launcher.VMConnectTimeoutStatusHandler"
		plugin ="org.eclipse.jdt.launching"
		code="117">
	</statusHandler>	
	...
</extension>