2017-03-08 8 views
-3

例外が発生したときにコンソールからスタックトレースを読み込むeclipseプラグインを設計しています。例外が発生したソースコードからプログラムで行を読み取る方法

プラグインは基本的に例外が発生したときのコンテンツベースの検索に使用されます。ユーザはスタックトレースからキーワードを明示的に選択しますが、プラグインは暗黙的にソースコードの行を必要とするため、ソースコード行とキーワードを使用して検索結果を向上させることができます。その場合、プラグインはソースコードを変更することはできません。

コンソールでファイル、パッケージ、行番号が表示されますが、例外を発生させたソースコードの対応する行が必要です。私は

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 10, Size: 0 
at java.util.ArrayList.rangeCheck(ArrayList.java:653) 
at java.util.ArrayList.get(ArrayList.java:429) 
at Test.main(Test.java:13) 

のような例外がある場合、私はあなたがおそらく正確な再利用可能なコードが、この何かを持っていない可能性がありTest.java

+0

のようなもの** 'exception'スタックトレース**車輪の再発明なぜあなたは、それをプリントアウトするように宣言されていない場合を除き、スタックトレースに起こる何詳細を提供? – emotionlessbananas

+0

例外が発生すると、プラグインが起動します。プラグインには例外オブジェクトがありません。プラグインはコンソールからのスタックトレースのみを処理します。例外オブジェクトがなければ、プラグインはどのように行を取得できますか? – kanchan

+0

'org.eclipse.ui.console.consolePatternMatchListeners'のようなものを使用していますか?既存の 'JavaExceptionConsoleTracker'は、コンソールから例外からソースを開く方法を知っています。 –

答えて

0

のソースコードからライン13を望むたとえば

あなたはそれを探索することができます。

Throwableクラスでは、StackTrace Elements Listにアクセスし、Propagatedされた場所のコードのLine番号を取得できます。

注: 例外オブジェクトに複数のStackTraceの要素を取得することがあり

回では、あなたはイテレータとあなたが の行番号たいものを取得することがあります。

catch(Throwable e){ 
      e.getStackTrace()[e.getStackTrace().length - 1].getLineNumber(); 
     } 
+0

しかし、私は例外を引き起こすソースコードを変更するアクセスすることはできません – kanchan

+0

あなたはプラグインからソースコードを変更することを意味する – mhasan

+0

いいえ、私はソースコードを変更せずに例外を引き起こす行が欲しいです。英語が苦手な人には申し訳ありません。 – kanchan

関連する問題