JSP异常处理机制
JSP出来有HTML代码,还有JAVA脚本元素,但是JSP页面用try-catch处理异常是比较困难的,怎样处理异常呢?还好,JSP规范中定义了异常处理机制,JSP异常有以下两个步骤
1、写一个JSP错误页面
异常处理文件需要使用page指令的isErrorPage属性,格式如下
<%@ page isErrorPage="true"%>
如果在页面上进行了这样的设置,页面就有一项特殊的功能,就是能够访问异常对象exception,exception是JSP的内部对象,当页面在运行过程中发生异常的时候,会抛出异常对象exception,该对象exception包含了异常信息。下面是处理异常文件errorPage.jsp:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page isErrorPage="true"%>
2、在JSP内指定异常发生时应该回到哪个错误页面
要想让页面在产生异常的时候,由专门的异常处理文件对异常进行处理,需要在该页面中使用page指令的errorPage指定专门的异常处理页面,格式如下
<%@ page errorPage="errorPage.jsp"%>
另外,为页面指定异常处理文件还可以通过web.xml进行配置
常见的异常编码;
400错误:错误请求
401错误:访问被拒绝
403错误:文件被禁止访问
404错误:文件没有找到
500错误:问价在运行过程中发生未知错误
实例:
(1)已经一个web工程,命名为“errordemo”,在工程的WebRoot下新建JSP页面,命令为MyJsp.jsp,代码如下
<%@ page pageEncoding="GB2312" %> <html> <head></head> <body> <% String[] strlen={"welcome","to","chengdu"}; for(int i=0;i<10;i++) { out.println(strlen[i]+"---测试"); i++; } %> </body> </html>
(2)启动tomcat,并发布web工程,访问MyJsp.jsp页面,会出现如下的错误
由于代码故意设置数组越界的异常,所以报出的是500错误,在配置文件web.xml中指定此错误处理页面,添加如下代码
<error-page> <!-- 为响应状态码声明错误页面 --> <error-code>500</error-code> <location>/500.jsp</location> </error-page> <error-page> <!-- 为特定的异常类型说明错误页面 --> <exception-type>java.lang.Throwable</exception-type> <location>/500.jsp</location> </error-page>
<error-page>元素包括一个<exception-type>或一个<error-code>元素,外加一个<location>元素,<location>元素包括处理此错误的Servlet,JSP页面或静态页面的上下文相对路径,<exception-type>元素包含了所要处理的异常类型的完全限定名,<error-code>元素包含了所要处理的HTTP响应状态码
(3)编写异常处理页面
在工程WebRoot下新建JSP页面,命名为500.jsp,代码清单为
<%@ page pageEncoding="GB2312"%> <%@ page isErrorPage="true" %> <html> <head> <title>500错误处理</title> </head> <body> 这是500错误页面! <br> 异常信息为<%=exception.getClass().getName() %> </body> </html>
(4)发布于测试应用程序后,运行结果如下
推荐阅读
-
Java 复习笔记5 - 异常处理
-
Spring Boot → 07:错误处理机制
-
java中如果我老是少捕获什么异常,如何处理?
-
tomcat6下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
-
JSP对URL链接中的中文乱码处理方法总结
-
Android多线程处理机制中的Handler使用介绍
-
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
-
Python中的异常处理try/except/finally/raise用法分析
-
php异常处理使用示例
-
python爬虫系列:三、URLError异常处理