Java14 - 有用的 NullPointerException

Java14 引入了 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)

新方式:用新的Flag编译运行程序

$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)