簡介:在自定義標記中引用更多交互性的同時,也會增加錯誤出現的可能性,尤其是以非法參數形式 出現的錯誤。在本期的 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:[email protected]">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 -->