User Tools

Site Tools


tips:clojure:nullpointerexception_without_stacktrace

Trace Missing

참고 : https://github.com/technomancy/leiningen/issues/1025#issuecomment-38253962

때때로 clojure로 서버 프로그래밍을 하다 보면 stacktrace없이 덩그러니 NullPointerException만 나는 경우가 있다.

다음 처럼…

(cond (>= nil 1) :unreachable)
;=> NullPointerException [trace missing]

이것은 Clojure의 문제가 아니라 JDK의 Java VM의 Optimizaion의 문제이다. (Oracle의 JDK의 문제다. OpenJDK에서는 문제가 없다고 한다)

성능상의 이유로 예외( NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException, ArrayStoreException, and ClassCastException.)가 여러 번 발생하면, 컴파일러는 그 메소드를 미리 할당왼 예외를 던지도록 재컴파일하여, 더 빠르게 한다.

이 기능을 사용하지 않으려면 Java 옵션을 다음과 같이 주면된다.

-XX:-OmitStackTraceInFastThrow
tips/clojure/nullpointerexception_without_stacktrace.txt · Last modified: 2019/02/04 14:26 (external edit)