2009-11-25 10 views
6

最初はこれがよく質問されると思っていましたが、これについての情報を調べようとすると失敗してしまったと私は間違っていました。Eclipseプラグインの集中型例外処理

例外の一元的な例外処理のためのメカニズムがEclipseプラットフォームにはありますか?

たとえば... DBに接続してクエリを発行するプラグインプロジェクトがあります。その結果がいくつかのデータを生成するために使用されます。再生回数これは今までの最も一般的な例のようです。 :) クエリは、プラグインが提供するすべてのUIコントロールからほぼすべてのユーザーアクションに対して実行されます。ほとんどの場合、DB Query APIは、それによってスローされると宣言されたDB SomeDBGeneralExceptionに固有のものを持つでしょう。それはあなたのソフトウェア設計が何であれ、それに従って処理することができます。しかし、起こりそうなチェックされていない例外についてはどうでしょうか?ネットワークとの関係で突然DBとの通信が途切れる このような場合、中央の場所で例外をキャッチしたい場合(たとえば、低レベルの通信プロトコルapiメッセージではなく)ユーザーにユーザーフレンドリーなメッセージを提供し、ユーザーが実行できるいくつかの可能なアクション特定の問題を扱う?

Eclipseプラットフォームのコンテキストで考えると、「org.eclipse.ExceptionHandler」のような拡張ポイントがあり、特定の(ある種のフィルタリングサポートの)例外ハンドラを宣言することができます。実際の取り扱いに柔軟性がありますか?

答えて

5

あなたは、そのjavadocをより引用WorkbenchAdvisor

からpublic void eventLoopException(Throwable exception)をオーバーライドすることがあります。

UIイベントを処理するコード が 例外をスローしたときに、このメソッドが呼び出されます。完全に機能する アプリケーションでは、このメソッドは決して と呼ばれることはありません。実際には、それは未確認のランタイム 例外をトリガーコード にバグがある場合 場に出ます。

+0

素晴らしい!私は、すぐに使える高レベルのAPIがあることを期待していましたが。ありがとう私はそれをショットを与えるだろう! – Svilen

3

はい、Eclipseは、説明したようにフレームワークを提供します。

拡張ポイントの詳細については、http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/ua_statushandling_defining.htmを参照してください。

出発点は、デフォルト実装であるWorkbenchErrorHandlerです。 AbstractStatusHandlerを拡張する独自のクラスを実装する必要があります。また、org.eclipse.uiプラグインのInternalErrorDialogを見たいかもしれません。スタックトレースが表示されますが、これは望ましくないかもしれませんが、ErrorDialogが拡張され、コピーできるサンプルが提供されています。