我想反序列化包含方法的XML文件。 片段看起來像:如何捕捉NoSuchMethodException
XMLDecoder decoder = new XMLDecoder(os);
deSerializedObject = decoder.readObject();
decoder.close();
return deSerializedObject;
當XML文件不包含每一個object.It方法拋出NoSuchMethodException @的readObject。
java.lang.NoSuchMethodException:沒有與名稱添加方法找到 在java.beans.Statement.findMethod(Statement.java:454) 在java.beans.Statement.invokeMethodImpl(Statement.java:247 )java.beans.Statement.access處的 $ java.beans.Statement上的$ 000(Statement.java:46) java.security.AccessController.doPrivileged(AccessController.java:284)處的$ 1.run(Statement.java:130) java.beans.Statement.invokeMethod上的 (Statement.java:127) at java.beans.Expression.getValue(Expression.java:67)at java.beans.XMLDecoder $ SAXHandler.executeCommon(XMLDecoder.java:392) 在java.beans.XMLDecoder $ SAXHandler.execute(XMLD ecoder.java:321) at java.beans.XMLDecoder $ SAXHandler.endElement(XMLDecoder.java:286)at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.impl .XMLDocumentFragmentScannerImpl.scanEndElement(未知 來源) 在org.apache.xerces.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDispatcher.dispatch(未知 來源) 在org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(未知 來源) 在組織.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)a牛逼 org.apache.xerces.parsers.AbstractSAXParser.parse(來源不明)
在org.apache.xerces.jaxp.SAXParserImpl $ JAXPSAXParser.parse(未知 來源)在org.apache.xerces.jaxp.SAXParserImpl.parse (來源不明) 在javax.xml.parsers.SAXParser.parse(來源不明)在java.beans.XMLDecoder.readObject(XMLDecoder.java:662)
問題是我不能趕上這個例外。處理它的正確方法是什麼?
try{
deSerializedObject = decoder.readObject();
System.out.println("We are after read object");
}
catch (NoSuchMethodException e)
{
System.out.println("We are in catch block !!");
e.printStackTrace();
}
decoder.close();
return deSerializedObject;
這裏的錯誤是 「爲NoSuchMethodException無法到達的catch塊。這個異常是永遠不會從try語句體拋出」
XML看起來
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0" class="java.beans.XMLDecoder">
<object class="java.util.ArrayList">
<void method="add">
<object class="InfoParameters">
<void property="Name">
<string>Jay</string>
</void>
<void property="Level">
<string>10</string>
</void>
</object>
<object class="InfoParameters">
<void property="Name">
<string>Hir</string>
</void>
<void property="Level">
<string>10</string>
</void>
</object>
</void>
</object>
</java>
呵呵我明白了,因爲'readObject()'沒有被聲明爲拋出'NoSuchMethodException',Java並不認爲這可能發生,所以嘗試在'NoSuchMethodException'之後添加一個默認的異常塊。我會將它添加到我的帖子下面。 – 2012-03-10 19:26:59
你還沒有發佈的代碼中還有其他內容。根據錯誤消息'readObject()'不是異常的根本原因,所以它必須來自不同的語句 – 2012-03-10 19:46:43
您可以發佈序列化對象的XML版本嗎?必須有一些事情發生在那裏。 – 2012-03-10 20:07:15