收藏 分享(赏)

JAVA空指针异常问题解析.ppt

上传人:weiwoduzun 文档编号:4224542 上传时间:2018-12-16 格式:PPT 页数:10 大小:702.50KB
下载 相关 举报
JAVA空指针异常问题解析.ppt_第1页
第1页 / 共10页
JAVA空指针异常问题解析.ppt_第2页
第2页 / 共10页
JAVA空指针异常问题解析.ppt_第3页
第3页 / 共10页
JAVA空指针异常问题解析.ppt_第4页
第4页 / 共10页
JAVA空指针异常问题解析.ppt_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、JAVA空指针异常分析篇,易商数码技术中心 刘佳2016.05.05,什么叫做空指针?为什么会出现空指针异常?,NullPointerExceptionj是ava中的空指针异常描述,那么java有基本类型和引用类型 空指针异常其实就是:引用类型在未赋值的情况下(默认为null)却执行了某些具体的操作出现了这样的异常;空指针异常产生的主要原因如下: (1)当一个对象不存在时又调用其方法会产生异常obj.method() / obj对象不存在 (2)当访问或修改一个对象不存在的字段时会产生异常obj.method() / method方法不存在,重点关注报错发生的所在行,通过空指针异常产生的两条主

2、要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放于设定的值之前。,空指针的解决办法:,案例演示,(JSP)代码段1: out.println(request.getParameter(“username“); 描述: 代码段1的功能十分简单,就是输出用户输入的表域“username“的值。 说明: 看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什么问题。但是,如果某个用户在输入数据时并没有提供表单域“username“的值,或通过某种途径绕过表单直接输入时,此时request.getParameter(“username“)的值为空(

3、不是空字符串,是空对象null。),out对象的println方法是无法直接对空对象操作,因此代码段1所在的JSP页面将会抛出“java.lang.NullPointerException“异常。 即使对象可能为空时,也调用java.lang.Object或Object对象本身的一些方法如toString(), equals(Object obj)等操作。,案例说明,(JSP)代码段2: String userName = request.getParameter(“username“); If (userName.equals(“root“) 描述: 代码段2的功能是检测用户提供的用户名,如

4、果是用户名称为“root“的用户时,就执行一些特别的操作。 说明: 在代码段2中,如果有用户没有提供表单域“username“的值时,字符串对象userName为null值,不能够将一个null的对象与另一个对象直接比较,同样,代码段2所在的JSP页面就会抛出(java.lang.NullPointerException)空指针错误。,String userName = session.getAttribute(“session.username“).toString(); 描述: 代码段3的功能是将session中session.username的值取出,并将该值赋给字符串对象 userNa

5、me。 说明: 在一般情况下,如果在用户已经进行某个会话,则不会出现什么问题;但是,如果此时应用服务器重新启动,而用户还没有重新登录,(也可能是用户关闭浏览器,但是仍打开原来的页面。)那么,此时该session的值就会失效,同时导致session中的session.username的值为空。对一个为null的对象的直接执行toString()操作,就会导致系统抛出(java.lang.NullPointerException)空指针异常。,(JSP)代码段3:,解决方案:,为了确保进行操作或引用的对象非空,假若我们要对某对象进行操作或引用,我们首先去检查该对象是否已经实例化且不为空;并且在系统

6、中加入针对对象为空时情况的处理。 如:采用String对象保存用户提交的结果;在如果涉及对象的操作时,先检测其是否为空后,检查到对象为空后,可再选择进行以下任一种处理方式: 处理方式 1) 检查到对象为空时,设置对象值为空字符串或一个默认值; 处理方式 2) 检测到对象为空时,根本不执行某操作,直接跳转到其他处理中。 处理方式 3) 检查到对象为空时,提示用户操作有错误。 将代码段2按以上方式进行改写,得到: 方式1: String userName = request.getParameter(“username“); / 该变量值为空时,转化为默认空字符串 If (userName = n

7、ull) userName = “; If (userName.equals(“root“) 方式2: String userName = request.getParameter(“username“); / 该变量值为空时,转化为默认空字符串,不执行有关操作。 If (usreName != null) If (userName.equals(“root“) 方式3: String userName = request.getParameter(“username“); / 该变量值为空时,转化为默认空字符串,不执行有关操作。 If (usreName = null) / 提示用户输入信息为空 实际中,上面提供到三种处理方式也同样适用于其他异常的处理: 异常处理方式 1) 检查到异常出现,设置对象值为空字符串或一个默认值; 异常处理方式 2) 检测到异常出现,根本不执行某操作,直接跳转到其他处理中。 异常处理方式 3) 检查到异常出现,提示用户操作有错误。,编码规范说明: 事先熟悉需求,在构成表单的时候关注必填字段内容,在完成前端JS判空后,在后台action部门找到执行保存方法的字段进行判空; 案例说明:,数值为空导致查询太多的规则,错误说明: 案例显示:,感谢您的关注,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报