2012-06-25 50 views

回答

1

由於documentation指出newSAXParser方法是抽象的。但是,newInstance方法會創建一個SAXParserFactoryImpl對象,其中extendsSAXParserFactory並覆蓋newSAXParser方法。

這裏的newSAXParser方法只拋出ParserConfigurationException,但如果你看它裏面,它捕獲SAXException這是翻譯爲ParserConfigurationException。 通過init方法在com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl構造函數中拋出此異常。

我已經通過完整的java 5源代碼進行了搜索,沒有其他類擴展了SAXParserFactory。 所以基本上,你要求的方法從不拋出SAXException。 但是,如果它被拋出,它會被捕獲並翻譯成ParserConfigurationException

+0

我發現了另一個實現。所有的實現都一樣。他們將'SAXException'轉換爲'ParserConfigurationException'。我正在開發Android的Dalvik。它甚至捕獲了「例外」。真的不知道爲什麼'SAXParserFactory.newSAXParser'聲明它拋出'SAXException'。然而從代碼我現在可以看到解析器實現只拋出'SAXException'。 – Salw

+0

我也不知道。一個可能的解釋是,在以前的版本中'SAXException'沒有被翻譯......我不知道 – Atticus

1

如前所述here

Throws: 
ParserConfigurationException - if a parser cannot be created which satisfies the requested configuration. 
SAXException - for SAX errors. 

所以好像SAXException中被拋出在SAXParser的每一個錯誤,不解析配置錯誤。