Servlet的异常处理机制
来源:互联网 发布:csgo残局 知乎 编辑:程序博客网 时间:2024/04/20 03:43
一.在Servlet中,有两种服务器端异常处理机制
<error-page>
<error-code>or<exception-type>
<location>
其中<error-code>元素指定HTTP的错误代码,<exception-type>元素指定JAVA异常类的完整限定名.
<location>元素给出用于响应HTTP错误代码或者JAVA异常的资源的路径,该路径是相对于WEB应用程序根路径的位置.
<error-page>元素可以声明两种类型的错误处理:一是指定对HTTP错误代码的处理,二是指定对程序中产生的JAVA异常的处理.
二.HTTP错误代码的处理
在WEB.XML文件中对HTTP404错误指定相应的错误处理页面.
<error-page>
<error-code>404</error-code>
<location>/FileNotFound.html</location>//该路径为相对于WEB应用程序根路径的位置,必须以/开头.
</error-page>
在上例中<error-code>元素指定了HTTP的错误代码,<location>子元素指定了响应HTTP404错误的页面路径.
三.JAVA异常的处理
利用<error-page>元素还可以声明对程序中产生的JAVA异常的处理,例如一个SERVLET从文件中读取配置信息,如果该文件不存在,就会抛出java.io.FileNotFoundException异常.例:
<error-page>
<exception-type>java.io.FileNotFoundException</exception-type>
<location>/ExcepHandler</location>
</error-page>
在<error-page>元素中,<exception-type>子元素指定了JAVA异常类的名字,<location>子元素指定了对异常进行处理的servlet类,当然,也可以指定一个静态页面对异常进行响应.
声明试异常处理主要是在WEB.XML文件中声明对各种异常的处理方法,他的好处是开发人员在开发WEB应用程序时无须考虑什么时候会产生HTTP错误或抛出JAVA异常,这些都交给SERVLET容器进行处理,他的缺点是,必须针对可能出现的各种错误情况定义处理页面或SERVLET,否则某些HTTP错误或异常将无法处理.
程序试异常处理
程序异常处理就是在WEB程序中利用TRY-CATCH语句来捕获的异常,并对捕获的异常进行相应的处理.
一.使用RequestDispatcher来处理异常
利用RequestDispathcher将请求转发给其他的SERVLET进行处理,也可以将异常封装在一个请求中,然后利用RequestDispatcher转发给一个异常处理SERVLET进行统一的处理.
如果在一个WEB应用程序,有多个SERVLET可能抛出相同的异常,采用这种方式对异常进行处理,可以避免在多个SERVLET中编写同样的异常处理代码.
例:
try{
int a=5;
int b=0;
int c=a/b;
}
catch(ArithmeticException e){
req.setAttribute("javax.servlet.eror.exception",e);
req.setAttribute("javax.servlet.error.request_uri",req.getRequestURI());
RequestDispatcher rd=req.getRequestDispatcher("xxxxx");
rd.forward(req,resp);
}
我们将抛出异常的SERVLET的位置做为HttpServletRequest对象的属性保存到请求对象中,然后通过RequestDispatcher对象的forward()方法将请求转发给XXXX,而XXXXX可以从请求对象中取出异常对象和位置.
XXX.SERVLET:
String uri=(String)req.getAttribut("javax.servlet.error.request_uri")
Object excep=req.getAttribute("javax.servlet.error.exception")
通过上面这2句可以从某个抛出异常的SERVLET中取出异常对象和抛出异常的SERVLET的位置做为req.getAttribut的参数获取出来进行处理.
显示为:/xxx/xxx
java.lang.arithmeticException: /by zero
声明试异常处理实现简单,直接在WEB.XML文件中进行配置就可以,可以处理HTTP错误代码和JAVA异常,缺点是异常处理很单一,针对每种异常都需要在WEB.XML文件中进行配置,由于抛出异常的异常被SERVLET容器处理并做出响应,无法得知是那段程序代码出现了问题.
程序试异常处理容易了解异常在代码中的位置,而且对于同一种异常,可以由不同的程序段抛出,并在catch语句中进行处理,还可以利用RequestDispatcher将不同的异常交给同一个servlet进行统一处理. 缺点是无法处理HTTP错误,编码量大.
- Servlet的异常处理机制
- Servlet的异常处理机制
- Servlet的异常处理机制 HTTP404错误
- Servlet中异常处理机制
- 异常的处理机制
- Servlet异常处理的问题,
- Struts的异常处理机制
- PHP5 的异常处理机制
- Struts的异常处理机制
- Struts的异常处理机制
- PHP5的异常处理机制
- PHP5的异常处理机制
- java的异常处理机制
- Struts的异常处理机制
- Struts的异常处理机制
- java的异常处理机制
- PHP5的异常处理机制
- java的异常处理机制
- 关于wamp配置虚拟主机支持多站点的操作
- linux或mac系统下的端口转发
- 赋值运算符的重载
- SQLite Android数据库详解
- 黑马程序员--动态类型检测
- Servlet的异常处理机制
- 【五校联考2015 9.5】送你一棵线段树
- 搭建go开发环境时,出现GoSublime error: MarGo build failed的问题
- Android数据存储
- Android 之数据存储--SharedPreferences
- Java 创建对象有哪几种方式
- 高效程序员的狂暴之路
- 架构设计:系统间通信(1)——概述从“聊天”开始上篇
- github-july-回文判断