简介:在自定义标记中引用更多交互性的同时,也会增加错误出现的可能性,尤其是以非法参数形式 出现的错误。在本期的 JSP最佳实践中,Brett McLaughlin 向您展示了如何在源代码中捕获和忽略 IllegalArgumentException 异常。
在我们讨论 JSP 自定义标记的时候,我们一直都设法回避了错误处理的重要细节。在我们已经推出的 JSP 最佳实践系列的前面一半的文章中,大多数讲的都是 JSP 容器提供的功能,比如说 param 、 out 和 import 标记。在这些情况下,错误处理是 JSP 规范和 Web 服务器实现的事,也就是说就算是我们想 做什么也做不了。
但是最近两期我们主要讨论了自定义标记库和属性。我们不仅开始往 JSP 页面中添加新的功能,而且 还创建了允许 JSP 作者与代码交互的属性。而且,很可能我们已经在 JSP 页面中引入了新型的错误,或 者由于(以后什么时候)页面的作者的过失可能会引起标记的代码或者后面的输出产生灾难性的后果。无 论在哪一种情况下,往自定义标记中加入错误处理机制就变得很有必要。
有关例子的说明:在本期 JSP最佳实践中我们使用的所有例子的代码都是建立在前一期开发的代码的 基础上的。在继续阅读本文之前,您应该确保已经成功地完成了上一期的设置和编码练习。
回顾
我们首先将重复以前的步骤,回顾一下我们在上一期开发的一些代码,但是这次我们将着重发现代码 中的错误(或者潜在的错误可能性)。
首先,我们先回忆一下向 lastModified 标记中添加的新属性 format 。这个属性允许页面作者传入 一个格式字符串,java.text.SimpleDateFomrat 类可以使用该字符串来定制最后修改日期戳的格式。虽 然这种交互对于大部分 JSP 页面是必不可少的,但是它也给我们的标记引入了潜在的错误可能性。
例如,一个页面作者可以轻易地提供一个格式字符串,这个字符串就可能导致一个讨厌的错误消息。 如果您想看看得到什么样的消息,可以按照清单1的样子修改您的 footer 文件(或者任何其它使用 lastModified 标记的 JSP 页面):
清单1. 一个无效的格式字符串
<%@ taglib prefix="site-utils"
uri="http://www.newInstance.com/taglibs/site-utils"%>
</td>
<td width="16" align="left" valign="top"> </td>
</tr>
<!-- End main content -->
<!-- Begin footer section -->
<tr>
<td width="91" align="left" valign="top" bgcolor="#330066"> </td>
<td align="left" valign="top"> </td>
<td class="footer" align="left" valign="top"><div align="center"><br>
© 2003
<a href="mailto:webmaster@newInstance.com">Brett McLaughlin</a><br>
Last Updated: <site-utils:lastModified
format="PHH:mm a, MM/dd/yyyy"/>
</div></td>
<td align="left" valign="top"> </td>
<td width="141" align="right" valign="top" bgcolor="#330066"> </td>
</tr>
</table>
<!-- End footer section -->