跳至主要内容

博文

目前显示的是 八月, 2021的博文

增强Java8和11的空指针异常提示

Welcome file 简介 在Java14之前,如果出现 NullPointerException ,只会知道有对象为null导致空指针,如果在多个对象上调用了方法,那么就很难区分到底哪个对象为null。在 Java14中,JEP 358(详情见参考资料1)的出现改善了这样的情况,丰富了 NullPointerException 的输出,但目前常用的版本还是Java8或11等长期支持的版本,所以下面介绍一种方法来让8和11也能实现更加丰富的 NullPointerException 提示。 增加空指针异常提示 示例代码如下: public static void main ( String [ ] args ) { Map < String , String > map = null ; demo ( map ) ; } public static void demo ( Map < String , String > map ) { System . out . println ( map . get ( "foo" ) . toLowerCase ( ) ) ; } 8和11在增强之前的输出如下: Exception in thread "main" java . lang . NullPointerException at com . nereusyi . npe . NpeDemo . demo ( NpeDemo . java : 18 ) at com . nereusyi . npe . NpeDemo . main ( NpeDemo . java : 14 ) 并没有什么有用的信息,根据这段异常也没法判断到底是哪个对象为null。 下面就可以开始动手增强异常提示了,我们可以在https://github.com/odnoklassniki/jvmti-tools/tree/master/richNPE中找到增强异常提示的代码,具体使用方法也在首页中有详细说明。 下载该文件之后,需要手动编译该文件,首页中少了Mac的编译命令,我在这里也补上: # Lin