网站大量收购闲置独家精品文档,联系QQ:2885784924

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

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA空指针异常问题解析

LOGO JAVA空指针异常分析篇 易商数码技术中心 刘佳 2016.05.05 什么叫做空指针?为什么会出现空指针异常? NullPointerExceptionj是ava中的空指针异常描述,那么java有基本类型和引用类型 空指针异常其实就是:引用类型在未赋值的情况下(默认为null)却执行了某些具体的操作出现了这样的异常;空指针异常产生的主要原因如下: (1)当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在 (2)当访问或修改一个对象不存在的字段时会产生异常obj.method() // method方法不存在 (JSP)代码段1: out.println(request.getParameter(username));? 描述: 代码段1的功能十分简单,就是输出用户输入的表域username的值。? 说明: 看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什么问题。但是,如果某个用户在输入数据时并没有提供表单域username的值,或通过某种途径绕过表单直接输入时,此时request.getParameter(username)的值为空(不是空字符串,是空对象null。),out对象的println方法是无法直接对空对象操作,因此代码段1所在的JSP页面将会抛出java.lang.NullPointerException异常。 即使对象可能为空时,也调用java.lang.Object或Object对象本身的一些方法如toString(), equals(Object obj)等操作。? 案例说明 String userName = session.getAttribute(session.username).toString();? 描述: 代码段3的功能是将session中session.username的值取出,并将该值赋给字符串对象 userName。 说明: 在一般情况下,如果在用户已经进行某个会话,则不会出现什么问题;但是,如果此时应用服务器重新启动,而用户还没有重新登录,(也可能是用户关闭浏览器,但是仍打开原来的页面。)那么,此时该session的值就会失效,同时导致session中的session.username的值为空。对一个为null的对象的直接执行toString()操作,就会导致系统抛出(java.lang.NullPointerException)空指针异常。? (JSP)代码段3: 解决方案: 为了确保进行操作或引用的对象非空,假若我们要对某对象进行操作或引用,我们首先去检查该对象是否已经实例化且不为空;并且在系统中加入针对对象为空时情况的处理。 如:采用String对象保存用户提交的结果;在如果涉及对象的操作时,先检测其是否为空后,检查到对象为空后,可再选择进行以下任一种处理方式:? 处理方式 1) 检查到对象为空时,设置对象值为空字符串或一个默认值;? 处理方式 2) 检测到对象为空时,根本不执行某操作,直接跳转到其他处理中。? 处理方式 3) 检查到对象为空时,提示用户操作有错误。 将代码段2按以上方式进行改写,得到:? 方式1: String userName = request.getParameter(username); // 该变量值为空时,转化为默认空字符串???????????? If (userName == null) 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部

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档