Java 14 - 有用的 NullPointerException


Java 14 引入了 NullPointerException,其中包含有用的信息,以防 -XX:+ShowCodeDetailsInExceptionMessages 标志传递到 JVM。

例子

考虑以下示例 -

ApiTester.java

public class APITester {
   public static void main(String[] args) {
      String message = null;
      System.out.println(message.length());
   }   
}

老方法:编译并运行程序

$javac APITester.java
$java APITester

输出

Exception in thread "main" java.lang.NullPointerException
   at APITester.main(APITester.java:6)

新方式:使用新标志编译并运行程序

$javac APITester.java
$java -XX:+ShowCodeDetailsInExceptionMessages APITester

输出

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "<local1>" is null
   at APITester.main(APITester.java:6)