空指针在java中的环境配置,轻松搞定项目中的空指针异常Caused by: java.lang.NullPointerException: null...

大家在项目测试过程中,是不是经常会碰到这个空指针异常呢Caused by: java.lang.NullPointerException: null

当大家遇到这个问题,大家是怎么处理?自己解决还是让开发来解决

以下是小编自己遇到的实际案例:

查询组织详情的时候,出现系统异常

f84716552840592853380c40d4ec228c.png

既然出现了问题,那么就查看日志呗(学会查看日志,是定位问题的最基本的能力)

841a8e26aeb22b34676e5841bf776804.png

532e7a22baf0b03a1f72ee59a000a155.png

查看代码的247行,是操作啥:

2c703d1995b2c6eee85c8656c96e4006.png

第247行的代码是查询orgAuth.getUserMaxLimit()方法获取getUserMaxLimit

获取接口的sql,查看哪个sql是在查询getUserMaxLimit

898116be919f424a723fe4c3091a229d.png

通过对比发现:

5d8ee9aaa450060d88ce3e2941d38d9d.png

数据库中确实查询到的UserMaxLimit字段的NULL,所以后端抛出了空指针异常

那么看一下正常的不报错的查询的结果数据:

7fbed0d8ce03ab2dec940f3a9402f75f.png

至此,问题已经找到了

那么怎么解决这个问题就简单了,直接复制这个字段到存在问题的数据记录中

INSERT INTO `debtoauth2`.`t_organization_auth` (`id`, `orgId`, `smsSwitch`, `smsMaxLimit`, `userMaxLimit`, `debtMaxLimit`, `createTime`, `updateTime`, `isOutCall`) VALUES ('1671037', '3', '0', '-1', '5', '50', '2019-09-25 17:25:57', '2019-09-25 17:25:57', '0');

e971da44506ba4d50cf56f92054d0ee4.png

再次查看业务接口:

76d542e88272c5048162913d453b124f.png

问题已经解决

其实项目环境出现报错不可怕,关键是要有自己的定位意识,环境问题,数据问题,配置问题都可能阻塞测试过程,只有掌握了问题的解决方法,以不变应万变

其实针对这类空指针的异常定位,比较简单,如果永远不去自己排除问题,永远没有进步,依赖开发

实际上出现空指针的时候,有可能是并发的时候出现接口查询超时,导致下面的接口参数为空,或者数据库中不存在这个字段,或者缓存没有这条记录导致的

随机推荐

Nuxt.js logoVue.js 后端渲染开源库 Nuxt.js

Nuxt.js 是一个通过 Vue 用于服务端渲染的简单框架,灵感来自 Next.js. 目前尚处于开发阶段,1.0 版本即将发布 1 分钟视频演示 Nuxt 基于 ES2015,这使得代码有着更愉快 ...

Symantec Backup Exec恢复数据库

Insus.NET是使用Symantec Backup Exec来备份数据以及一些服务器文件.下面步骤是怎样恢复一个数据库.当我们数据库有问题,或是想恢复某一天的数据,得需要操作数据恢复Restore ...

微信video标签全屏无法退出bug

安卓(android)微信里面video播放视频,会被强制全屏,播放完毕后还有腾讯推荐的视频,非常讨厌..强制被全屏无法解决,但是视频播放完毕后退出播放器可以解决.方法就是视频播放完毕后,用音频aud ...

逻辑回归:使用SGD(Stochastic Gradient Descent)进行大规模机器学习

Mahout学习算法训练模型 mahout提供了许多分类算法,但许多被设计来处理非常大的数据集,因此可能会有点麻烦.另一方面,有些很容易上手,因为,虽然依然可扩展性,它们具有低开销小的数据集.这样一个 ...

cron表达式详解(Spring定时任务配置时间间隔)

Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...

深入JS系列学习4

深入JS系列学习4 Javascript 装载和执行 明白了JS的装载和执行,没有给出很好的解决方案,在IE下可用defer属性: 浏览器对于Javascript的运行有两大特性:1)载入后马上执行, ...

限制**类型物料不能输入BOM

应用 Oracle Bill Of   Materiel 层 Level Function 函数名 Funcgtion Name CUX_BOMFDBOM 表单名 Form Name CUXBOMFD ...

H5外包团队:使用HTML5播放短视频代码分享

滑动代码 /** * 滑动处理 */ function Touch() { this.init(); } Touch.fn = Touch.prototype; Touch.fn.init = fun ...

package结构

1.package结构 一个package下常见的文件. 路径有:├── CMakeLists.txt #package的编译规则(必须)├── package.xml #package的描述信息(必 ...

[Python]项目打包:5步将py文件打包成exe文件(转)

1.下载pyinstaller并解压(可以去官网下载最新版): http://nchc.dl.sourceforge.net/project/pyinstaller/2.0/pyinstaller-2 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值