Java14新特性:配置ShowCodeDetailsInExceptionMessages,输出详细的NullpointException信息
Java 14新增了JVM参数-XX:+ShowCodeDetailsInExceptionMessages
,在启动命令添加,就可以在抛出NullpointException的信息中得到更详尽的调用信息,有助于更快的定位和解决问题。
-XX:+ShowCodeDetailsInExceptionMessages
默认值为disabled。
示例
package com.example;
public class Main {
public static void main(String[] args) {
String nullValue = null;
nullValue.chars();
}
}
Java14之前NullpointException信息
Exception in thread “main” java.lang.NullPointerException
at com.company.Main.main(Main.java:7)
Java14添加了-XX:+ShowCodeDetailsInExceptionMessages
后:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.chars()" because "nullValue" is null
at com.company.Main.main(Main.java:7)
在信息中,精准提示Null的值得变量。
设置参数
Ideal设置
在右上角编辑允许程序的设置,点击选择“Edit Configuration”,进入设置窗口:
<figure class="image"></figure>在设置configuration页的VM options添加配置项:-XX:+ShowCodeDetailsInExceptionMessages
Docker设置
可以直接在Dockerfile添加ShowCodeDetailsInExceptionMessages
VM 选项。
FROM openjdk:14-jdk
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENV JAVA_OPTS="-XX:+ShowCodeDetailsInExceptionMessages"
ENTRYPOINT ["java" ,"$JAVA_OPTS","-jar","/app.jar"]