9.3.4 <c:catch>标签
优质
小牛编辑
128浏览
2023-12-01
<c:catch>标签用于捕获标签体抛出的java.lang.Throwable异常。<c:catch>标签的语法格式如下:
<c:catch [var="varName"]>
nested actions
</c:catch>
<c:catch>标签只有一个var属性,用来表示标签体抛出的异常对象。var属性是String类型,不支持动态属性值。如果指定var属性,<c:catch>标签会以var属性指定的名称将异常对象保存在page域中。如果未指定var属性,则<c:catch>标签只捕获异常,不保存异常对象。<c:catch>标签可以捕获任何标签或Java代码抛出的异常。
catch.jsp页面是一个演示<c:catch>标签的例子,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
java.util.Calendar cal = java.util.Calendar.getInstance();
request.setAttribute("cal", cal);
%>
<c:catch var="myException">
<!-- 错误设置了Calendar对象的time属性值,将抛出异常 -->
<c:set target="${cal}" property="time" value="abcd" />
</c:catch>
<!-- 输出异常对象的相应信息 -->
myException:
<c:out value="${myException}" />
<br>
myException.getMessage():
<c:out value="${myException.message}" />
<br>
myException.getCause():
<c:out value="${myException.stackTrace}" />
在上面的程序中,由于使用<c:set>标签将Calendar对象的time属性值设置成了String类型的值,因此会抛出一个异常。在<c:catch>标签结束后,使用了<c:out>标签和EL输出了异常对象的相应属性值。
在浏览器地址栏中输入如下的URL:
http://localhost:8080/demo/chapter9/catch.jsp
浏览器显示的效果如图9.5所示。
图9.5 <c:catch>标签的演示效果