Java Web程序设计基础教程(李绪成) 第15章

上传人:E**** 文档编号:89355123 上传时间:2019-05-23 格式:PPT 页数:37 大小:664KB
返回 下载 相关 举报
Java Web程序设计基础教程(李绪成) 第15章_第1页
第1页 / 共37页
Java Web程序设计基础教程(李绪成) 第15章_第2页
第2页 / 共37页
Java Web程序设计基础教程(李绪成) 第15章_第3页
第3页 / 共37页
Java Web程序设计基础教程(李绪成) 第15章_第4页
第4页 / 共37页
Java Web程序设计基础教程(李绪成) 第15章_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《Java Web程序设计基础教程(李绪成) 第15章》由会员分享,可在线阅读,更多相关《Java Web程序设计基础教程(李绪成) 第15章(37页珍藏版)》请在金锄头文库上搜索。

1、第15章 程 序 调 试,15.1 错误类型 15.2 常见编译错误 15.3 特殊类型的错误 15.4 运行时错误和逻辑错误的调试,15.1 错 误 类 型 15.1.1 编译错误 编译错误主要是语法错误,发生这样的错误之后,程序根本没有办法运行。这些错误也是最容易解决的问题,刚开始编写程序时容易犯这样的错误。,编译错误主要分为两类:Java文件中的错误和JSP文件中的错误。Java文件中的错误可以在编译文件的时候发现,而JSP文件中的错误需要在运行的时候才知道,但是现在在一些开发环境中也支持JSP文件中错误的动态提示。这些错误通常可以根据错误提示进行修改。例如,提示少了“;”号,把分号加上

2、就可以了。还有一些错误不容易查找,因为JSP程序在运行的时候要转换成Java代码,而这些错误并不直接提示原来的错误,而是针对转换后的代码提示错误,这样的错误不容易查找。,15.1.2 运行时错误 运行时错误是程序在运行的时候产生的错误,此时程序已经通过编译,并且没有语法错误。例如,运行时要访问的文件不存在,要连接的数据库不存在等。这些错误并不是每次运行都会产生,错误产生本身需要有一些条件。这些错误通常是由于一些不好的编程习惯造成的,如果能够提前对各种可能的错误进行处理的话,将不会出现这种错误。解决的方法主要是进行异常处理。,15.1.3 逻辑错误 逻辑错误不影响程序的执行,只是执行的结果不是期

3、望的结果。这种错误通常都是因为编写的代码在逻辑上有问题,所以称为逻辑错误。逻辑错误比较难定位,多数时候需要根据程序编写人员的经验处理。后面主要介绍针对逻辑错误的调试方法。,15.1.4 特殊错误 还有一些比较特殊的错误,程序本身没有问题,但是不能运行,这时候通常是程序运行的环境出了问题,需要根据浏览器的提示进行分别处理。,15.2 常见编译错误 15.2.1 Java文件中的常见编译错误 1. 符号错误 典型的错误提示如下: Cannot find symbol symbol : variable XX location : class XXX 这种类型的错误包括两个方面:变量错误和类错误。,

4、如果是变量错误,可能的原因包括: 变量没有定义而直接使用。 变量名写错了。 使用变量的地方已经超出了变量的作用范围。 如果是类错误,可能的原因包括: 类名写错了。 没有使用import引入。,2. 方法调用错误 典型的错误提示如下: Cannot find symbol symbol : method XX location : class XXX 这种错误属于方法调用错误,可能的原因包括: 方法名写错了。 参数个数不够。 参数类型不匹配。,3. 缺少符号 比较容易缺少的符号包括分号、大括号、小括号和双引号。 (1) 缺少分号,一般的提示错误如下: “;”expected 在赋值语句比较复杂,

5、或者方法调用比较复杂的时候容易出现这种错误。 (2) 缺少大括号,提示错误如下: “”expected,(3) 缺少小括号,提示信息错误: “)”expected 在同一行代码中嵌套多个方法调用的时候容易产生这样的错误。 (4) 缺少双引号,提示信息如下: unclosed string literal,4. 缺少返回值类型或者返回语句 在Java中大部分方法都需要返回值类型(构造方法不需要返回值),并且如果返回值类型不是void,应该有return语句。 如果方法没有定义返回值,并且也不是构造方法,则会提示下面的错误: invalid method declaration; return t

6、ype required 如果方法的返回值不是void,则方法中应该有返回值,如果没有,则提示信息如下: missing return statement,有时候虽然有返回值类型,但是仍然有提示,例如下面的代码: public int max(int a,int b) if(ab) return a; if(a=b) return b; 这时候提示错误主要是因为系统认为return语句不一定能执行到。,5. 类型不匹配 该类错误指赋值的时候等号左右的对象或者变量类型不匹配,并且不能进行自动转换。提示信息如下: incompatible types found : XXX required:YY

7、Y 如果方法的返回值类型和return语句返回的对象的类型不匹配,则报错信息是相同的。,6. 变量可能没有初始化 如果对一个没有初始化(实例化)的变量进行操作,会提示下面的错误: variable XX might not have been initialized 如果赋值过程是在try语句中进行的,也可能会出现这样的错误。,7. 没有进行异常处理 如果要调用的方法可能会产生异常,则调用这个方法的时候应该进行异常处理,如果没有处理,会提示下面的信息: unreported exception XXX; must be caught or declared to be thrown 解决此问题

8、的办法是使用try-catch进行处理,也可以在方法声明中使用throw声明。,8. 语句无法执行到 如果把要执行的代码放在了方法的return语句之后,则系统会提示下面的信息: unreachable statement 9. 中文字符 如果在程序中使用了非法字符(字符串中的常量可以使用),则系统会提示下面的信息: invalid character 这类错误通常都是出现了中文字符。常见的中文字符包括分号、单引号及双引号。,15.2.2 JSP文件中的常见编译错误 在JSP 2.0之后,JSP页面主要用于显示,一般不出现Java代码。在JSP页面中,主要就是对JSP的标签、表达式语言和JST

9、L的使用,所以多数错误都是与这些内容相关的。 1. 指令属性不正确 如果标签的指令属性错误,则系统提示如下错误信息: org.apache.jasper.JasperException: /exceptiontest.jsp(1,1) Page directive has invalid attribute: imports 产生错误的代码如下: ,2. 指令没有正常结束 如果标签后面缺少结束符“%”,则错误提示如下: org.apache.jasper.JasperException: /exceptiontest.jsp(2,0) Unterminated % page tag 产生错误的

10、代码如下: 如果缺少前面的开始标志“%”,则会把指令显示在界面上。,3. 标签属性不正确 如果标签的属性错误,会提示如下信息: org.apache.jasper.JasperException: /exceptiontest.jsp(3,0) According to the TLD or the tag file, attribute test is mandatory for tag if 产生错误的代码如下: ,4. 标签没有正常结束 JSP中的标签不管是JSP提供的还是自定义的,都必须有结束标志。如果标签没有标签体,例如,则标签应该以“/”结束。 如果标签有标签体,例如 标签体 则标

11、签必须以“”结束。 如果标签没有正常结束,会提示如下信息: org.apache.jasper.JasperException: /exceptiontest.jsp(4,0) Unterminated c:if tag,5. JavaBean属性错误 在表达式语言中主要是访问各种隐式对象,在访问这些对象的时候,如果访问了对象不存在的属性,则提示下面的信息: javax.servlet.ServletException: Unable to find a value for “a“ in object of class “java.lang.String“ using operator “.“

12、 产生错误的代码如下: $i.a ,15.3 特殊类型的错误 15.3.1 该页无法显示 如果没有启动服务器就进行访问,会产生如图15.1,图15.1 服务无法访问,遇到这样的错误启动服务器即可。 如果确定服务器已经打开,还是出现这样的错误,则可能是localhost不能解析,可以试着使用127.0.0.1访问。 如果还是不能访问,可能是服务器启动失败,此时可以查看服务器的启动信息。如果有控制台,可以查看控制台信息;如果没有控制台,可以查看日志文件。日志文件位于安装目录下的logs子目录下。多数时候是因为端口被占用。如果是端口被占用,则提示信息如下: Address already in us

13、e: JVM_Bind:8080,在这种情况下,需要关闭占用这个端口的其他程序或者修改Tomcat的端口。修改端口的地方是Tomcat安装目录下conf子目录下的server.xml。要修改这个端口,可使用文本编辑器打开并且使用查找功能查找到8080端口所在的代码,如下面的代码: 把代码中的8080修改成其他端口即可。,15.3.2 找不到文件 启动服务器之后,访问文件时报错信息包含下面的信息: HTTP Status 404 说明找不到相应的资源。造成这种错误可能有3种原因:第一种原因是因为Web应用没有正常启动;第二种原因是因为要访问的文件不存在;第三种原因是当前文件中访问了其他文件,而要

14、访问的文件不存在。,要解决这个问题,首先要判断是哪种原因造成的。可以试一下这个Web应用中的其他文件是否能访问,如果都不能访问,说明Web应用出问题了。如果其他的文件能够访问,则当前文件名写错了或者文件中要访问的文件不存在。通常文件名比较长时容易写错。 如果是Web应用出问题了,通常是web.xml文件出问题,这时通过日志文件可以查看错误的原因。日志文件在tomcat安装目录下的logs子目录中。,15.3.3 文件修改后不起作用 文件修改后并没有看到想要的效果,即文件的修改没有起作用,可能是两个方面的原因造成的。第一个可能的原因是,运行时使用的文件不是最新的文件,是内存中运行的对象。第二个可

15、能的原因是,浏览器缓存,即浏览器为了提高访问速度,使用了本地的缓存文件,没有从服务器获取最新文件。 对于第一种原因,可以采用两种方法解决。第一种方法是删除编译后的临时文件(位置在安装目录下的workCatalinalocalhost下),即删除相应的应用即可。第二种方法是重新启动服务器。,对于第二种原因,解决的办法是:把浏览器关掉,重新打开一个浏览器窗口进行访问即可。,15.4 运行时错误和逻辑错误的调试 调试程序前需要问一下自己“程序运行的过程是否清楚”,如果不清楚,先把程序的流程搞清楚。 下面通过对一个案例的分析来介绍如果对逻辑错误进行调试。 案例:登录处理。 功能:在登录处理中,在登录界面输入用户名和口令,然后提交给一个Servlet处理,Servle接收到登录信息之后调用一个JavaBean进行处理,这个JavaBean访问数据库进行验证,Servlet根据验证的结果进行处理,如果验证通过则转向某个页面,如果验证失败则重新转向登录界面。,现象:输入的用户名和口令与数据库中的用户名和口令完全相同,但仍然跳转到登录界面。 首先要清楚程序的运行过程,下面是涉及的文件及关键点: 登录界面:输入用户信息,点击提交按钮把信息提交给Servlet处理。 Servlet:接收用户输入的信息,然后把得到的信息作为参数,调用JavaBean进行处理,根据处理的结果选择界面对用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号