一次NaN引发的npe
# 先上代码
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; public class QQ { public static void main(String[] args) {
double result = calcute() < 0 ? 0 : calcute();
System.out.println(result);
ResultBean resultBean = new ResultBean(result);
System.out.println(resultBean.toString());
// 如果再用resultBean.value进行计算,则你会发现出现一堆npe,而且你还不一定知道问题到底出在哪儿。。。
JSONObject jsonObject = JSON.parseObject(resultBean.toString());
System.out.println(jsonObject.get("value"));
} public static double calcute() {
Double temp1 = 1d;
Double temp2 = 2d;
double temp3 = temp1 - temp2;
double temp4 = Math.sqrt(temp3);
double result = ((temp1 + temp4) / temp2);
return result;
}
} class ResultBean { private double value; public ResultBean(double value) {
this.value = value;
} public double getValue() {
return value;
} public void setValue(double value) {
this.value = value;
} public String toString() {
Object result = JSON.toJSON(this);
return result.toString();
} }
# 当然我只是把主要的逻辑提出来了,实际项目中还夹杂其他复杂的逻辑
# 上面代码的结果是:
NaN
{"value":null}
null
# 可以看到 Java Bean 转 jsonStr 的时候,把NaN给抹去了,这就给后面出现 npe 再排查问题造成了很大的困难。。。。。
一次NaN引发的npe的更多相关文章
- 使用Optional,不再头疼NPE
前言 在 Java 语言开发中,可能大多数程序员遇到最多的异常就是 NullPointException 空指针异常了.这个当初语言的开发者"仅仅因为这样实现起来更容易"而允许空引 ...
- Java基础—IO小结(一)概述与节点流
一.File类的使用 由于file类是一个基础类,所以我们从file类开始了解.(SE有完善的中文文档,建议阅读) 构造器: 常用方法:——完整方法请参见API API API!!! File做的是 ...
- Apache Pulsar 2.6.1 版本正式发布:2.6.0 功能增强版,新增 OAuth2 支持
在 Apache Pulsar 2.6.0 版本发布后的 2 个月,2020 年 8 月 21 日,Apache Pulsar 2.6.1 版本正式发布! Apache Pulsar 2.6.1 修复 ...
- 特性预览:Apache 顶级项目 Apache Pulsar 2.6.1 版本
在正式分享 2.6.1 版本更新细节之前,冉小龙首先为我们分享了两个相关 PIP 的内容. 一个是 PIP-47 中关于「基于时间来进行版本更新」的计划.该 PIP 提出后,从 2.5.0 版本到目前 ...
- 音视频开发:为什么推荐使用Jetpack CameraX?
我们的生活已经越来越离不开相机,从自拍到直播,扫码再到VR等等.相机的优劣自然就成为了厂商竞相追逐的赛场.对于app开发者来说,如何快速驱动相机,提供优秀的拍摄体验,优化相机的使用功耗,是一直以来追求 ...
- 你可能不知道的 NaN 以及 underscore 1.8.3 _.isNaN 的一个 BUG
这篇文章并不在我的 underscore 源码解读计划中,直到 @pod4g 同学回复了我的 issue(详见 https://github.com/hanzichi/underscore-analy ...
- C# 如何判断数据是否为 NaN
double a = 0 / 0d; if (double.IsNaN(a)){ //do } 在浮点数计算中, 0除以0将得到NaN ,正数除以0将得到PositiveInfinity ,负数除以0 ...
- numpy nan值的判断
我发现在数据处理中非常常见的就是nan值的判断,筛选数据尤为常见, 判断数据是否为nan,前提是np.float类型数组,但在应用于对象数组时会引发TypeError # 返回bool类型 np.is ...
- 解惑 ["1", "2", "3"].map(parseInt) 为何返回[1,NaN,NaN]
javascript中的parseInt与map函数都是常用的函数,可是 ["1", "2", "3"].map(parseInt) 为何返 ...
随机推荐
- java源码-HashMap源码分析
这次开始分析JDK8中的HashMap源码. 首先理解HashMap中几个关键变量, TREEIFY_THRESHOLD 链表转换红黑树扩容值 table 数组+链表+红黑树 size 当前存储数 ...
- redis的坑
1.外网无法连接redis 解决方法: 把redis.conf里的bind 127.0.0.1注释掉,不行的话把127.0.0.1修改成0.0.0.0 2.make的时候显示没有gcc 解决方法: 安 ...
- java:LeakFilling (Linux)
1.Nosql 列数据库,没有update,非关系型数据库: 为了解决高并发.高可扩展.高可用.大数据存储问题而产生的数据库解决方案,就是NoSql数据库. NoSQL,泛指非关系型的数据库,NoS ...
- Golang 单例模式 singleton pattern
在Java中,单例模式的实现主要依靠类中的静态字段.在Go语言中,没有静态类成员,所以我们使用的包访问机制和函数来提供类似的功能.来看下下面的例子: package singleton ...
- PJzhang:查看你的微信、QQ、新浪微博都授权给过谁
猫宁!!! 个人信息的保护,需要时刻关注,不能有丝毫懈怠. 保护个人信息,有两个方向,一个是减少个人信息外泄,另一个是上传大量鱼龙杂的个人信息,难以分辨,混淆视听. 这里不谈第二个, ...
- python高级篇
1.切片功能:类似于java中的split方法.对list或者triple中几个值进行取出的过程. L = ['a','b','c','d'] L[0:3] = ['a','b','c'] # ...
- webgoat8百度云下载链接
网络不好的很难下载,网上也没什么好用的下载链接,我就上传了百度网盘,有需要的兄弟自己下. 链接:https://pan.baidu.com/s/1plTxkZUhSZm9vA5GGzYmMQ 提取码: ...
- 【VS开发】获得devcon.exe
1.获得devcon.exe 有两种方法,一是直接去网上下,不过下的很多64位的都不能用,二是自己装个ddk去安装目录下找,在WinDDK\7600.16385.1\tools\devcon下,当然还 ...
- 前端数据Mock
参考链接:https://www.clloz.com/programming/front-end/js/2019/05/10/data-mock/?utm_medium=hao.caibaojian. ...
- amh 操作
挂在分区到/home 迁移数据库/usr/local/mysql/data 到/home/data目录 504 卡死 进入kangle后台,选扩展,再选中扩展里的命令选项,修改PHP-NTS的协议为f ...