JSP异常处理

JSP异常处理

当我们编写JSP程序的时候,可能会遗漏一些BUG,这些BUG可能会出现在程序的任何地方。JSP代码中通常有以下几种异常:
1、 检查型异常:检查型异常就是一个典型的用户错误或者一个我们所无法预见的错误。如:如果一个文件将要被打开,但是无法找到这个文件,则一个异常被抛出,这些异常不能再编译期被简单地忽略。
2、 运行时异常:一个运行时异常可能已经被避免,这种异常在编译期将会被忽略。
3、 错误:这里没有异常,但问题是它超出了用户或者我们所控制的范围。错误通常会在代码中被忽略,根本不能拿它怎么样。如:栈溢出错误,这些错误都会在编译期被忽略。

使用Exception对象
exception对象是Throwable子类的一个实例,只在错误页面中可用。以下举例Throwable类中的一些重要的方法。
1、public String getMessage()方法返回异常的信息,这个信息在Throwable构造函数中被初始化
2、public ThrowablegetCause()方法返回引起异常的原因,类型为Throwable对象。
3、public String toString()方法返回类名。
4、public void printStackTrace()方法将异常栈轨迹输出至System.err
5、public StackTraceElement[] getStackTrace()方法以栈轨迹元素数组的形式返回异常栈轨迹。
6、public ThrowablefillInStackTrace()方法使用当前栈轨迹填充Throwable对象。

JSP提供了可选项来为每个JSP页面指定错误页面,无论何时页面抛出了异常,JSP容器都会自动地调用错误页面。如下举例为index.jsp指定了一个错误页面,使用<%@page errorPage=”XXXXX”%>指令指定一个错误页面。代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page errorPage="test.jsp" %>
<% String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>Error Handling Example</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">
  </head>
<body>
<% int x = 1; // Throw an exception to invoke the error page
   if (x == 1)
   {
      throw new RuntimeException("Error condition!!!");
   } %>
</body>
</html>

编写test.jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<% String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>Show Error 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">
  </head>
<body>
<h1>Opps...</h1>
<p>Sorry, an error occurred.</p>
<p>Here is the exception stack trace: </p>
<pre>
<% exception.printStackTrace(response.getWriter()); %>
  </body>
</html>

test.jsp文件使用了<%@ page isErrorPage=“true” %>指令,这个指令告诉JSP编译器需要产生一个异常实例变量。现在访问index.jsp页面,页面结果如下:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值