2012-01-08 11 views
3

Eclipseアプリケーションでキャッチ例外を通知する方法はありますか?は、Eclipse/Javaアプリケーションでキャッチ例外が通知される

私は日食デバッガを使用してアプリケーションを起動した場合、私はキャッチし、キャッチされない例外(https://stackoverflow.com/a/3066280/228965を参照)の際に実行を中断することができます知っています。私はこの機能が何とかJVMTIを使うと思います。

は今、私は次のような問題があります。

私は私が書いていない日食のアプリケーションを持っています。私はこのアプリケーションを監視したい。私は、アプリケーションのさまざまな側面(ユーザーのやりとり、ワークベンチの変更など)を監視するためのバンドルをいくつか作成しました。 bundles.infoファイルを使用して、アプリケーションに沿ってこれらのバンドルを開始します。今例外が発生するたびに通知を受ける必要があります。エラーログにリスナーを追加しました。この方法で、キャッチされない例外が通知されます。しかし、元の開発者が捕まえたものであっても、「すべての」例外について通知を受けることができるようにしたい。

これを達成する方法はありますか?

+0

は、Eclipseのデバッガの仕事でそのアプリケーションを実行しているだろうか、自動的にプログラム内からすべての例外をログに記録する方法が必要なのですか? –

+2

AOPを使用してすべてのスローを検索し、ログに記録される 'before'アドバイスを追加します。 Eclipse固有ではありません。 –

+0

私はプログラムのソースコードを持っていません。これはEclipseアプリケーションです。バンドルをOSGiランタイムの中で起動し、異なるイベントが発生したときに通知を受けたいとします。たとえば、例外がスローされます。 – zardosht

答えて

0

java.lang.Exceptionのコンストラクタにブレークポイントを追加します(正確には、探しているものによってはThrowableでも可能です)。

すべての例外は、カスタム例外でも、これらのいずれかから拡張する必要があります。そのため、作成された例外を見つけることができます。そして、それをトレースして、 。 AOPを使用して

も良いオプションかもしれないが、このアプローチは、既存のコードへの変更を必要としない - ソースコードやバイトコードを。

+0

私はeclipse内またはデバッグモードでプログラムを実行していません。私はEclipseアプリケーションを与えて、OSGiランタイムで自分のバンドルを起動します。デバッグとブレークポイントはありません。 – zardosht

+0

デバッグモードで実行する可能性はありますか? (このためにはEclipseは必要ありません)。これを行うことができない場合は、コードを修正することがほとんどあります。その場合、AOPアプローチを提案します。 – ziesemer

0

あなたはあなたのアプリケーションのロガーを調査することができます。 log4jを使用している場合は、例外に特化したアペンダーを作成し、それを使用することができます。

-1

JDK 1.5からは、まさにこの目的のためにThread.setDefaultUncaughtExceptionHandler()を使用することができます。

+0

質問から:「しかし、私はまた、「オリジナルの開発者によって捕らえられたものであっても」「例外」を通知することもできるようにしたい。あなたのソリューションは捕捉されない例外のみを処理します。 –

関連する問題