在使用基於Java的XML剖析器時
你常常要應付異常(exception)的處理
有些異常很容易處理
但是有些異常卻很難處理
在這一篇文章中
我們將看到在使用XML文檔時碰到的一些常見異常
並探討一下如何正確地處理這些異常
DOM異常 在使用DOM剖析器進行剖析操作的時候
XML文檔會被立即處理並保存在內存
內存裡的對象將被處理為一個文檔對象模型(Document Object Model)——這基本上就是一種用於訪問底層XML文檔的面向對象的方法
在DOM裡處理XML文檔的時候
很多東西都會出現錯誤
大多數DOM下的異常都是作為DOMException類的一個實例發生的
這一個類支持
種不同的
具體的異常條件
每種條件都被指定為DOMException類的一個成員
叫做code
除了這個code成員
DOMException類還包含一組
個靜態成員
它們被用來確定異常的條件
當DOMException出現的時候
如果不檢查異常對象裡的code
那麼你就不會知道到底是這些條件中的哪一個導致了這個異常
為了正確地處理這個異常
你將需要確定是哪個條件導致了這個異常
Listing A顯示了一個Java程序
這一程序在創建新的DOM文檔時由於錯誤而無法通過
點擊這裡可以查看程序源代碼
要注意
我們使用了一種切換機制來確定到底滿足了哪個條件
這樣我們就可以很容易地測試每個條件
直到我們找到正確的條件
在以上范例中
我們已經在用於無效字符的條件裡放置了一條消息
當你編譯並運行這個例子的時候
你會看到這樣一條信息
存在非法字符(There is an invalid character)
你會希望正確地處理每個條件
而不是將條件留為空白
你可能想要提取出條件異常的處理(方法)
並將它放置到它自己的方法裡
甚至是它自己的類裡
那樣的話
你就可以在你的代碼裡放入更加簡單的異常處理機制
例如
我們可以創建一個叫做DOMExceptionHandler的新類
如Listing B所示
可以點擊此處查看源代碼
既然我們有了用來處理DOM異常的專用處理器類
那麼我們就可以從我們的處理代碼裡調用它
Listing C裡的代碼是對DOMFail類的一個修正
它使用了我們新的DOMExceptionHandler類
可以點擊這裡查看代碼
這個新的類要比我們原來的DOMFail類簡單得多
它還可以讓我們能夠更容易地重新使用異常處理器的代碼
我們現在不用每次需要的時候才剪切和粘貼事件處理器代碼
而只是調用DOMExceptionHandler類就可以了
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26890.html