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.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; } } } }
在这个例子里,我们已经在用于无效字符的条件里放置了一条消息。当你编译并运行这个例子的时候,你会看到这样一条信息:存在非法字符(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类: