try{ // ・・・ } catch(NullPointerException e) { log.error("error!", e); } e.getStackTrace().lengthで、 例外のスタックトレースサイズを見ると、0になっている。 【原因】 JVMは、同じような箇所で組み込み例外が繰り返しthrowされると、 メソッドを再コンパイルして最適化することがある。 この最適化されたメソッドでは、 JVMが事前に用意した例外インスタンスがthrowされ、 その例外インスタンスにはスタックトレースが提供されない。 これが原因。 -XX:-OmitStackTraceInFastThrowオプションでJVMを起動することで、 この最適化を無効にすることができる。 http://java.sun.com/j2se/1.5.0/ja/relnotes.html (HotSpot VM