首页 电脑学院 黑客教程 网站技术 网页特效 免费论文 公文写作 演讲发言 实用文档 职场指南 时尚生活 情感男女 其他资讯

您的位置:首页-> 网站技术-> JSP技术-> JAVA几个常见错误简析
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或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.getAttribute("session.username").toString();

描述:
代码段3的功能是将session中session.username的值取出,并将该值赋给字符串对象 userName。

说明:
在一般情况下,如果在用户已经进行某个会话,则不会出现什么问题;但是,如果此时应用服务器重新启动,而用户还没有重新登录,(也可能是用户关闭浏览器,但是仍打开原来的页面。)那么,此时该session的值就会失效,同时导致session中的session.username的值为空。对一个为null的对象的直接执行toString()操作,就会导致系统抛出(java.lang.NullPointerException)空指针异常。

解决方案:
为了确保进行操作或引用的对象非空,假若我们要对某对象进行操作或引用,我们首先去检查该对象是否已经实例化且不为空;并且在系统中加入针对对象为空时情况的处理。

如:采用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) 检查到异常出现,提示用户操作有错误。

2。格式化数字错误 java.lang.NumberFormatException分析
(JSP)代码段3:

String s_memberid = request.getParameter("memberid");
int i_memberid = Integer.parseInt(s_memberid);
描述:
以上代码段的作用是将用户提交的表单域memberid的值转化为整数。

说明:
如果用户输入正确的数字如:1082,不会有什么问题。然而,如果用户输入T1082时,由于T1082不是合法的数字格式,JAVA无法将其转化为合适的数字,导致抛出java.lang.NumberFormatException数字格式化异常。

解决方案:
在任何用到字符串转化为数字时,捕捉异常,对异常情况进行处理按异常处理方式1:检查到异常发生,即赋给某变量一个默认值;(可能在某些情况下导致一其他程序错误[比方说其他模块中并未处理您所赋予的默认值情况,可能导致一些异常或错误出现。])按异常处理方式3:检查到异常发生,提示用户使用正确的数字格式输入。(实现稍微麻烦一点,但是将错误阻挡在您的模块前[即您提供给其他模块的值均是安全的]。)按这种方法对程序进行改写,在编程时稍微麻烦一点,但这的确会您的模块更加健壮。将代码段3按以上要求进行改写,得到:

String s_memberid = request.getParameter("memberid");
int i_memberid;
try
{
i_memberid = Integer.parseInt(s_memberid);
...
}
catch(NumberFormatException nfe)
{
//方式1:(简单,直接给该编号为一个默认值0;)
i_memberid = 0;
//方式2:(很简陋的做法,建议使用更友好的提示方式)
out.println("");
}

3,字符串越界错误 java.lang.StringIndexOutOfBoundsException等字符串类相关错误
代码段4:

String s_all_power = "1010011";
String s_access_power = s_all_power.substring(3,4);

描述:
以上代码段功能的功能是获取字符串s_all_power中的第4个字符。

说明:
一般情况下,程序不会有问题,如果由于某种原因,s_all_power长度变短,程序就会抛出字符串错误。

解决方案:对字符串进行截取(substring, charAt)、转换为字节数组(getBytes),字符数组转换为字符串(valueOf)操作时,先对操作字符串对象的存在性(是否为空)及长度进行检查后,再进行操作。

改写得到:

String s_all_power = "1010011";
if (s_all_power.length>4)
String s_access_power = s_all_power.substring(3,4);

4。类定义未找到错误 java.lang.NoClassDefFoundError
原因:

由于该程序调用到的JAVA类文件没有正确上传;
解决方案:
将JAVA类文件重新上传。

JAVA类文件已经上传,但应用服务器并未检测到,建议将JSP页面重新更新。
解决方案:
将JSP页面更新并上传;或将应用程序服务器进行重新启动。

5,JAVA错误 java.lang.Error

原因:

1.对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行;
2.对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;
3.系统访问的外部资源出现异常情况。
解决方案:

1.访问外部资源前,首先检查该资源(如数据库)是否可正常连接或操作。
2.访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一次关闭操作。
3.尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程序的执行效率。


在百度中查找更多JAVA几个常见错误简析的内容
职场宝典   职场故事   职场跳槽   职场文化   职场理财   职场充电   情感天地   职场女性   职场礼仪   职场新人
报告总结   述职报告 工作总结 调查报告 工作汇报 计划方案 个人总结 社会实践 规章制度 调研报告 
  实习报告 考察报告 辞职报告 
演讲发言   竞职演说   就职演说   精彩演说   爱国演讲   英语演讲   十七大演讲   安全生产演讲稿   
节日祝福   重阳节 国庆节 教师节 中秋节 情人节 七夕节 劳动节 妇女节 清明节 愚人节 春节 元旦 圣诞节  儿童节  端午节 母亲节 新婚祝福 生日祝福 
讲话致辞   开业开幕   会议主持   庆典致辞   会议发言   党风廉政   党政报告   贺电慰问   婚丧嫁娶   思想宣传
法律常识   基本常识   法律文书   权益常识   劳动保障   婚姻继承   民事诉讼   刑事诉讼   
党建材料   入党申请   思想学习   党性分析   思想汇报   转正申请   民主生活   党委党建   入团申请   申报材料
求职简历   个人简历   求职自荐   求职谋略   面试技巧   求职英语   自我鉴定   英文简历   简历封面
心得体会   心得体会   经验交流   读后感   
时政热点   和谐社会   先进性教育   新农村建设   十七大   八荣八耻   科学发展观   劳动合同法   
人际沟通   社交技巧   社交礼仪   口才技巧   谈话技巧   演讲技巧   
营销技巧   电话销售   网络销售   推销技巧   促销技巧   销售口才   营销手段   销售技巧   谈判技巧   

“ JAVA几个常见错误简析”来源于网络,版权归作者所有!勿用于商业用途。

JSP技术

ASP技术
PHP技术
JSP技术
.NET技术
服务器技术
数据库开发
其它类

本类阅读TOP10

·Struts实践入门(原创)
·tomcat配置手册(server.xml)——中文版
·MySQL的JDBC驱动程序下载地址
·一个log4j的学习笔计
·DOM文档操作和XML文件互相转换的java实现 (转贴)
·JAVA几个常见错误简析
·HttpServletRequest, ServletRequest, request
·JBOSS中,中文问题的彻底解决
·JSP传递参数方法
·ORACLE ORA-00600错误的阐述

广告


关于本站|服务条款|广告服务|客服中心|发布文章|网站留言