public static void main(String[] args) { Document doc = new DocumentImpl(); Element rootElement;
try{ rootElement = doc.createElement("Order"); rootElement.setAttribute("〈id", "109823"); doc.appendChild( rootElement ); } catch (DOMException e) { switch(e.code) { case DOMException.DOMSTRING_SIZE_ERR: break; case DOMException.HIERARCHY_REQUEST_ERR: break; case DOMException.INDEX_SIZE_ERR: break; case DOMException.INUSE_ATTRIBUTE_ERR: break; case DOMException.INVALID_ACCESS_ERR: break; case DOMException.INVALID_CHARACTER_ERR: System.out.break; case DOMException.INVALID_MODIFICATION_ERR: break; case DOMException.INVALID_STATE_ERR: break; case DOMException.NAMESPACE_ERR: break; case DOMException.NO_DATA_ALLOWED_ERR: break; case DOMException.NO_MODIFICATION_ALLOWED_ERR: break; case DOMException.NOT_FOUND_ERR: break; case DOMException.NOT_SUPPORTED_ERR: break; case DOMException.SYNTAX_ERR: break; case DOMException.WRONG_DOCUMENT_ERR: break; default: System.out.println("Unknown DOM exception"); break; } } } }
在這個例子里,我們已經在用于無效字符的條件里放置了一條消息。當你編譯并運行這個例子的時候,你會看到這樣一條信息:存在非法字符(There is an invalid character)。你會希望正確地處理每個條件,而不是將條件留作空白。 你可能想要提取出條件異常的處理(方法),并將它放置到它自己的方法里,甚至是它自己的類里。那樣的話,你就可以在你的代碼里放入更加簡單的異常處理機制。例如,我們可以創建一個叫做DOMExceptionHandler的新類,如Listing B所示:
public class DOMExceptionHandler { public static void HandleDOMException(DOMException e) { if (e != null) { switch(e.code) { case DOMException.DOMSTRING_SIZE_ERR: break; case DOMException.HIERARCHY_REQUEST_ERR: break; case DOMException.INDEX_SIZE_ERR: break; case DOMException.INUSE_ATTRIBUTE_ERR: break; case DOMException.INVALID_ACCESS_ERR: break; case DOMException.INVALID_CHARACTER_ERR: System.out.println("There is an invalid character"); break; case DOMException.INVALID_MODIFICATION_ERR: break; case DOMException.INVALID_STATE_ERR: break; case DOMException.NAMESPACE_ERR: break; case DOMException.NO_DATA_ALLOWED_ERR: break; case DOMException.NO_MODIFICATION_ALLOWED_ERR: break; case DOMException.NOT_FOUND_ERR: break; case DOMException.NOT_SUPPORTED_ERR: break; case DOMException.SYNTAX_ERR: break; case DOMException.WRONG_DOCUMENT_ERR: break; default: System.out.println("Unknown DOM exception"); break; } } } } 既然我們有了用來處理DOM異常的專用處理器類,那么我們就可以從我們的處理代碼里調用它。Listing C里的代碼是對DOMFail類的一個修正,它使用了我們新的DOMExceptionHandler類: