jsp的错误处理

1.jsp页面的错误处理

        jsp页面中主要有两种错误:编译时错误和运行时的错误。
编译时错误是jsp引擎在编译jsp源代码时出现的,编写jsp时的语法有错误,导致jsp容器无法将jsp网页编译成正确的文件。例如,500 Internal ServerError,“500”指HTTP的错误状态码。产生这种编译错误时,通常是jsp存在语法错误,或是jsp引擎在安装,设定时有不适当的情形发生。对于编译时错误并没有一个系统的方法可遵循。解决的方法通常是检查程序是否有写错的或检查服务器的配置是否有问题。
运行时错误是在执行已编译好的jsp页面来处理客户端的请求时出现的。客户端请求处理时错误的发生,往往不是语法的错误,而可能是逻辑上的错误。例如,一个计算除法的程序,当会员输入分母为0时,程序会发生错误并抛出了异常(Exception),这时应当交给异常处理机制(Exception Handling)做适当的处理,一般采用要、下列两种处理方法。
(1)在页面中使用try-catch结构处理异常
在jsp页面使用try-catch来捕抓jsp中可能出现的异常,类似于在普通的Java代码中,将可能出现异常的脚本代码放入到try块中,但由于jsp页面除了包含HTML标签,还包含各种脚本元素,在jsp中使用try-catch结构会使得整个页面的可读性变差,这种方法并不是理想的解决方案,常用在不太复杂的页面或需要特殊处理异常的页面。
(2)采用jsp提供的更加简洁有效的异常处理机制
使用jsp的错误页面转发机制,可以使用一个特定的jsp页面来处理或显示错误。相对于前面的try-catch结构处理异常方法,这样能提供一个更为全局错误处理机制,还能为多个jsp页面提供同一个错误处理页面。具体来说分为以下两步:
首先,编写一个专用的jsp错误处理页面,该页面将仅在其他页面出现运行时异常情况下才被调用,如ExceptionHandling.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isErrorPage="true" %>
<html>
  <head>
    
    <title>My JSP 'ExceptionHandling.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->


  </head>
  
  <body>
<font color="#ff0000" size="4">
An Exception ocurred,The Exception is:
<%=exception.getMessage() %>
</font>
  </body>
</html>

在page指令中指定本页面是异常处理页面。这样,jsp引擎在进行处理时在jsp页面内增加了一个jsp页面中没有的隐含对象exception。exception对象将包含异常的相关信息。可以将其进行处理,如写入日志,或仅仅返回客户端一个异常信息。
然后在可能发生错误的jsp页面中,指定当异常发生时由哪个专门的异常处理jsp进行处理,如DivException.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page errorPage="ExceptionHandling.jsp" %>
<html>
  <head>
    
    <title>My JSP 'DivException.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body>
    <%
    int i = 5/0;
     %>
  </body>
</html>


其中,在page指令中表明本页面一旦出现任何运行时异常,jsp引擎会产生一个exception对象,并传递给异常处理页面ExceptionHandling.jsp。本页面执行到脚本int i = 5/0时会产生异常,页面处理终止。异常对象将被传到ExceptionHandling.jsp,由页面返回对客户端的响应,如下图:



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值