2016-11-24 11 views
-1

私は例外の使用を含むプログラムを作成しました。これは私のコードの出力の中で望ましくないエラーポインタを取得している点を除いて正常に動作しているようです。ここに私のコードの出力は次のようになります。意図した例外を削除せずにエラーポインタを削除することはできますか?

************Herbivore caught Exception example************ 
java.lang.Exception: Herbivores only eat plants! 
Exception caught 
************Herbivore non-caught Exception example************ 
Herbivores eat Vegetables 
    at QuestionEditor.Rabbit.eat(Rabbit.java:38) 
    at QuestionEditor.Main.main(Main.java:25) 

私は例外を取得していますなぜそれはちょうど私に言っているので、私は自分のコード内の出力の最後の2行を望んでいないが、私はちょうどプリントアウトしたいです可能であれば、これらの追加のエラーメッセージポインタのない例外メッセージ? NetBeansを使用しているので、すべての例外プログラムで発生するかどうかわかりません。 私のプログラムのコードを表示する必要はないと思っていました。なぜなら実際にはエラーはありませんし、これらの追加メッセージから別のものに出力したいものが出力されているからです。コードはそう言ってコメントを残してください。私は私の質問でそれを編集します。好ましい出力は次のようになります。

************Herbivore caught Exception example************ 
java.lang.Exception: Herbivores only eat plants! 
Exception caught 
************Herbivore non-caught Exception example************ 
Herbivores eat Vegetables 

もし誰かが感謝してくれるなら、感謝します。

+0

この問題を示す最小のサンプルコードを含めてください。 – Jason

+0

これは 'e.printStackTrace()'によって行が 'System.err.println(e);'に変更される可能性がありますが、Stacktraceはバグを発見するための貴重な情報です。そうする場合は、ロギングフレームワークを使用してスタックトレースを(ログ)ファイルに書き込む必要があります。 –

+0

ああ、ありがとう、それはあなたが説明したもののためだった。 – James

答えて

0

Thread.UncaughtExceptionHandlerでこれを達成できます。これにより、特定のスレッドで例外がキャッチされなくなったときに実行されるコードを追加できます。例外ハンドラ内では、単にエラーメッセージを出力することができます。そのコード:

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { 

    @Override 
    public void uncaughtException(Thread t, Throwable e) { 
     System.out.println(e.getMessage()); 
    } 
}); 
関連する問題