学科分类
目录
Java Web

<c:catch>标签

在操作JSP页面时,偶尔也会出现一些异常,为了捕获这些异常,Core标签库中提供了一个<c:catch>标签,该标签用于捕获嵌套在<c:catch>标签体中出现的异常,其语法格式如下:

<c:catch [var="varName"]>

  Nested actions

</c:catch>

​ 在上述语法格式中,可以看到<c:catch>标签有一个var属性,该属性用于标识<c:catch>标签捕获的异常对象,其值是一个静态的字符串,不支持动态属性值。<c:catch>标签会将捕获的异常对象以指定的名称保存到page域对象中,如果不指定var属性,则<c:catch>标签仅捕获异常,不在page域中保存异常对象。

​ <c:catch>标签可以捕获任何标签抛出的异常,并且可以同时处理多个标签抛出的异常,这样,可以对JSP页面的异常进行统一处理,显示给用户一个更友好的界面。接下来通过一个具体的案例来演示<c:catch>标签如何捕获异常,如例1所示。

例1 c_catch.jsp

 1  <%@ page language="java" contentType="text/html; charset=utf-8"

 2  pageEncoding="utf-8"%>

 3  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 4  <html>

 5  <head></head>

 6  <body>

 7    <c:catch var="myex">

 8      <%

 9        int i = 10;

 10       int j = 0;

 11       System.out.print(i + "/" + j + "=" + i / j);

 12     %>

 13   </c:catch>

 14   异常:<c:out value="${myex}" /> <br /> 

 15   异常 myex.getMessage:<c:out value="${myex.message}" /> <br /> 

 16   异常 myex.getCause:<c:out value="${myex.cause}" /> <br /> 

 17   异常 myex.getStackTrace:<c:out value="${myex.stackTrace}" />

 18 </body>

 19 </html>

打开IE浏览器,在地址栏中输入http://localhost:8080/chapter08/c_catch.jsp访问c_catche.jsp页面,此时,浏览器窗口中显示的结果如图1所示。

图1 c_catch.jsp

从图1可以看出,c_catch.jsp页面产生了一个算术异常,这个异常是由于被零除而引起的。由于在页面中使用了<c:catch>标签将这个异常捕获,并使用了<c:out>标签将捕获到的异常信息进行了输出,因此,在浏览器中便会看到产生异常的相关信息。

点击此处
隐藏目录