我正在阅读“专业Android应用程序开发”一书并试图实现一些示例。在第5章第151页中,以下代码抛出SAXParseException
。有谁知道为什么?
Document dom = db.parse(in);
我尝试了其他XML文件,抛出了同样的异常。
堆栈跟踪就像:
01-07 00:23:58.875:WARN / System.err(221):org.xml.sax.SAXParseException:expected:/ meta read:head(position:END_TAG @ 1:87 in java.io.InputStreamReader @ 43d0c720) 01-07 00:23:58.895:WARN / System.err(221):at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:151) 01-07 00:23:58.906:WARN / System.err(221):at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:157) 01-07 00:23:58.915:WARN / System.err(221):at com.paad.earthquake.Earthquake.refreshEarthquakes(Earthquake.java:82) 01-07 00:23:58.925:WARN / System.err(221):at com.paad.earthquake.Earthquake.onCreate(Earthquake.java:60) 01-07 00:23:58.936:WARN / System.err(221):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-07 00:23:58.936:WARN / System.err(221):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2444) 01-07 00:23:58.946:WARN / System.err(221):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2497) 01-07 00:23:58.955:WARN / System.err(221):在android.app.ActivityThread.access $ 2200(ActivityThread.java:119) 01-07 00:23:58.966:WARN / System.err(221):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1848) 01-07 00:23:58.976:WARN / System.err(221):在android.os.Handler.dispatchMessage(Handler.java:99) 01-07 00:23:58.987:WARN / System.err(221):在android.os.Looper.loop(Looper.java:123) 01-07 00:23:58.996:WARN / System.err(221):在android.app.ActivityThread.main(ActivityThread.java:4338) 01-07 00:23:58.996:WARN / System.err(221):at java.lang.reflect.Method.invokeNative(Native Method) 01-07 00:23:59.026:WARN / System.err(221):at java.lang.reflect.Method.invoke(Method.java:521) 01-07 00:23:59.040:WARN / System.err(221):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860) 01-07 00:23:59.046:WARN / System.err(221):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-07 00:23:59.056:WARN / System.err(221):at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:2)
如果在解析XML时出现任何导致其余代码无法运行的问题,则parse方法会抛出SAXParseException,因为如果XML无效,那么可能您不希望代码继续。
parse方法声明它为throws SAXParseException
,因此在调用该方法时必须显式捕获该异常,例如
try {
Document dom = db.parse(in);
} catch (SAXParseException e) {
e.printStackTrace();
}