JAVA几个常见错误简析
1,空指针错误Java.lang.NullPointerException
使用基本的JAVA数据类型,变量的值要么是默认值,如果没有正常赋值,程序就无法编译。因此,使用基本的Java数据类型(double、float、boolean、char、int、long)一般不会导致空指针异常。可以看出空指针异常主要与对象的操作有关。
首先,下面是空指针异常的一些可能情况以及相应的解决方法:
不管对象是不是空,直接开始用。
(JSP)代码片段1:
out . println(request . getparameter(" username "));
描述:
代码段1的作用很简单,就是输出用户输入的表字段“username”的值。
解释:
上面的说法好像没有语法错误,大部分情况下没有问题。但是,如果用户在输入数据时没有提供表单字段“username”的值,或者通过某种方式绕过表单直接输入,那么request . getparameter(“username”)的值就是空(不是空字符串,而是空对象null。),out对象的println方法不能直接操作空对象,所以代码段1所在的JSP页面会抛出“Java.lang.NullPointerException”异常。
即使对象可能是空,也会调用Java.lang.Object的一些方法或者对象本身,比如toString()、equals(Object obj)。
(JSP)代码片段2:
String username = request . getparameter(" username ");
)If(username . equals(" root ")
{....}
描述:
代码段2的作用是检测用户提供的用户名。如果是用户名为“root”的用户,会执行一些特殊操作。
注意:
在代码段2中,如果用户没有提供表单字段“username”的值,则字符串对象userName为null,无法直接将一个null对象与另一个对象进行比较。同样,代码段2所在的JSP页面也会抛出(Java . lang . nullpointerexception)空指针错误。
(JSP)代码片段3:
String username = session . get attribute(" session . username ")。tostring();
说明:
代码段3的作用是取出session中session.userName的值,赋给字符串对象userName。
注意:
一般情况下,如果用户已经有过一次会话,就不会有问题;但是,如果此时重启应用服务器,但是用户没有再次登录,(或者用户可能关闭浏览器,但是仍然打开原始页面。)那么,这个session的值此时就无效了,session.username在session中的值就是空。直接对空对象执行toString()操作会导致系统抛出(Java . lang . nullpointerexception)空指针异常。
解决方案:
要保证要操作或引用的对象不是空,如果我们要操作或引用一个对象,首先要检查对象是否已经实例化,不是空;并且当对象是空时的情况的处理被添加到系统中。
比如String对象用来保存用户提交的结果;如果涉及到对象的操作,先检查是否是空,再检查对象是空,然后选择以下任意一种处理方式:
处理方法1)当对象为空时,将对象值设置为空 string或默认值;
处理方法2)当检测到对象为空时,完全不执行任何操作,直接跳转到其他处理。
处理方法3)当对象为空时,提示用户操作有错误。
以上述方式重写代码段2,得到:
方法1:
String userName = request . getparameter(" userName ");
//当变量值为空时,转换为默认的空字符串
if(username = = null)
username = " ";
)If(username . equals(" root ")
{..........}
0条评论