发布于 1年前

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"]
©2020 edoou.com   京ICP备16001874号-3