大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 其他相关 -> JAVA几个常见错误简析

JAVA几个常见错误简析

时间: 2021-07-31 作者:daque

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"的用户时,就实行少许更加的操纵。 证明: 在代码段第22中学,即使有效户没有供给表单域"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("<script>alert(’您供给的用户编号有误,请从新输出。’;history.go(-1);</script>"); } 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.尽管在同一操纵中国共产党享外部资源,以缩小该操抵制资源的耗费,普及步调的实行功效。 

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.