2016-03-31 5 views
2

すぐに投げてキャッチ?例外 - それは例外をスローし、直接ちょうど印刷エラーにそれをキャッチしても意味がない

if(...){ 

} else { 
    try{ 
     throw new Exception(); 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 
+1

私はそれは状況に依存しているとします。例外をスローすることは高価であることに留意して、あなただけのユーザーにエラーメッセージをプリントアウトしている場合、簡単な 'System.err.println(...)は、'十分かもしれません。 –

答えて

3

スローとキャッチする必要はありません、あなたは簡単に呼び出すことができます

Thread.dumpStack(); 

あなたはまた、現在のスレッドからのスタックトレースを取得することができます配列:

StackTraceElement[] trace = Thread.currentThread().getStackTrace(); 

実行時にスタックを検査するような詳細を行う場合は、メソッドの名前を呼び出す)。

0

私はあなたが明示的(catchブロック内)LOGGERでログファイルに例外を送ったり、especific方法でそれを登録したい場合にのみ役に立つかもしれないと思います。

new Exception().printStackTrace(); 

またはさらに簡単:

+0

e.printStackTrace()を実行すると、トレースにログが記録されるので意味がありますか? –

+0

いいえ、これは、ログのトレースを入れていないだろうが、あなたはLogger.error(「エラー:」、e)のようなもので、あなたのcatchブロックを変更することができ、あなたのロガーファイルにその例外を登録するためには、 – Wakachopo

関連する問題