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”,进入设置窗口:

在设置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"]

 

版权声明:著作权归作者所有。

相关推荐

Android使用Kotlin新特性Parcelize序列化对象

Android对对象序列化主要有两种方式:Serializable和Parcelable。Serializable实际是使用Java的放射机制对对象做序列化和反序列化,其性能远低于使用Parcelable。但是使用Java写的Parcelable有点繁琐,需要我们实现Parcelable接口,手写很多模板代码。Java版Parcelable示例public class User

docker-machine配置导入/导出脚本

为了在多个主机同步docker-machine的配置,常常需要对docker-machine配置进行导入导出。这里附上两个脚本分别用于导出/导入docker-machine配置:docker-machine-export.sh和docker-machine-import.sh。这两个脚本需要所有的主机系统有相同的$MACHINE_STORAGE_PATH/certs。用法如下:导出(主机 

Bash输出错误信息到标准错误stderr

首先要了解文件描述符:文件描述符 0:表示标准输入stdinput文件描述符 1:表示标准输出stdout文件描述符 2:表示标准错误stderr要把信息输出到标准错误,可以把stdout(文件描述符 1)重定向stderr(文件描述符 2),命令如下:>&2 echo "error" 其中echo "e

jmeter压测输出HTML

启动jmeter,在cmd的控制台窗口如下:我们可以看到命令行的提示信息,大概的意思是做负载测试时不要使用GUI模式,使用命令行模式来运行Jmeter的测试脚本。GUI模式仅用于创建测试计划,和测试debug使用。同时,命令行提示语也给出了运行jmeter的测试脚本的命令:jmeter -n -t [jmx file] -l [result file] -e -o [Path to output

Linux查看显卡信息

Linux的lspci命令可以列出目前主机上面的硬件配备,vga则表示显卡。列出显卡信息如下:$ lspci | grep -i vga02:00.0 VGA compatible controller: NVIDIA Corporation GP102 [TITAN Xp] (rev a1)03:00.0 VGA compatible controller: NVIDIA Corporation

java8新特性

 1、list<Dto>转List<String> List<String> openIdList = list.stream().map(o -> o.getOpenId()).collect(Collectors.toList());  2、List转map Map<String, SearchActivityCustome

Java14新特性:Switch表达式

Java 14正式发布switch表达式特性。在之前的两个 Java 版本Java12,Java13,switch特性只是预览版。新的switch表达式有助于避免一些bug,因为它的表达和组合方式更容易编写。switch新的表达式有两个特点:支持箭头表达式返回。支持yied和return返回值。Java 14之前switch语法:switch (day) { case MONDAY:

Java 14新特性:instanceof的模式匹配

Java中instanceof是用来判断对象的类型是否是目标类型。如果是返回true,不是返回false。在Java 14之前,示例如下:if (obj instanceof String) { String str = (String) obj; .. str.contains(..) ..}else{ str = ....}obj instanceof String已经为

JAVA三大特性之多态

1、介绍多态是同一个行为具有多个不同表现形式或形态的能力多态就是同一个接口,使用不同的实例而执行不同操作多态性是对象多种表现形式的体现。2、多态存在的必要条件继承子类重写父类方法父类引用指向子类对象比如:Parent parent = new Child(); 3、代码示例①、基于继承实现的多态public class { public String name = "animal";