Java 14でNullPointerExceptionの詳細エラーメッセージを表示する

Java 14でNullPointerExceptionの詳細エラーメッセージを表示したいときのメモ。

※追記
Java 15からShowCodeDetailsInExceptionMessagesはデフォルトで有効になった。
https://bugs.openjdk.java.net/browse/JDK-8233014

Demo

Java 14をインストール後、ShowCodeDetailsInExceptionMessagesを有効にしてJShellを起動する

  • SDKMANを使う場合
% sdk install java 14.0.0-open 
% sdk use java 14.0.0-open 

% jshell -R-XX:+ShowCodeDetailsInExceptionMessages 
  • dockerを使う場合
% docker run --rm -it openjdk:14.0.2-jdk jshell -R-XX:+ShowCodeDetailsInExceptionMessages
jshell> String message = null
message ==> null

jshell> System.out.println(message.length())
|  Exception java.lang.NullPointerException: Cannot invoke "String.length()" because "REPL.$JShell$11.message" is null
|        at (#2:1)

jshell> /exit
|  Goodbye