Android:如何捕获从引用的库中抛出的致命异常?

时间:2012-05-31 17:53:47

标签: android exception try-catch

我正在使用一个名为'rome-1.0.jar'的引用库。

try {
    SyndFeedInput input = new SyndFeedInput();
    SyndFeed feed = input.build(new XmlReader(file));
}
catch(Exception e) {
    Log.e("", "ROME parse error: " + e.toString());
}

input.build(new XmlReader(file));是'rome-1.0.jar'图书馆电话。

虽然我正在捕捉所有异常,但我的应用仍然崩溃。

05-31 13:43:06.297: W/dalvikvm(11150): threadid=22: thread exiting with uncaught exception (group=0x40a4d1f8)
05-31 13:43:06.307: E/AndroidRuntime(11150): FATAL EXCEPTION: Thread-4199
05-31 13:43:06.307: E/AndroidRuntime(11150): java.lang.NoClassDefFoundError: java.beans.PropertyDescriptor[]
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.impl.BeanIntrospector.getPropertyDescriptors(BeanIntrospector.java:39)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.impl.CloneableBean.beanClone(CloneableBean.java:129)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.impl.ObjectBean.clone(ObjectBean.java:87)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.module.DCModuleImpl.clone(DCModuleImpl.java:771)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.module.impl.ModuleUtils.cloneModules(ModuleUtils.java:35)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.impl.ConverterForRSS090.createSyndEntry(ConverterForRSS090.java:90)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.impl.ConverterForRSS091Userland.createSyndEntry(ConverterForRSS091Userland.java:85)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.impl.ConverterForRSS092.createSyndEntry(ConverterForRSS092.java:46)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.impl.ConverterForRSS093.createSyndEntry(ConverterForRSS093.java:37)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.impl.ConverterForRSS094.createSyndEntry(ConverterForRSS094.java:58)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.impl.ConverterForRSS090.createSyndEntries(ConverterForRSS090.java:79)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.impl.ConverterForRSS090.copyInto(ConverterForRSS090.java:64)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.impl.ConverterForRSS091Userland.copyInto(ConverterForRSS091Userland.java:49)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.impl.ConverterForRSS094.copyInto(ConverterForRSS094.java:47)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.feed.synd.SyndFeedImpl.<init>(SyndFeedImpl.java:144)
05-31 13:43:06.307: E/AndroidRuntime(11150):    at com.sun.syndication.io.SyndFeedInput.build(SyndFeedInput.java:123)
...(my code)

有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

谢谢Kumar,你给了我一个主意。

我不知道这是一个错误。 我之前处理过OutOfMemoryError所以我知道我能够处理错误。

try {
    SyndFeedInput input = new SyndFeedInput();
    SyndFeed feed = input.build(new XmlReader(file));
}
catch(Exception e) {
    Log.e("", "ROME parse error: " + e.toString());
}
catch(Error e2) {
    Log.e("", "ROME parse error2: " + e2.toString());
}

以上代码处理错误。我知道这样做并不是一个好主意,但它符合我的目的。

谢谢。

答案 1 :(得分:2)

这不是一个例外,而是一个错误,其性质比异常更严重。你不应该处理错误。

http://www.coderanch.com/t/269746/java-programmer-SCJP/certification/Error-vs-Exception

如果发生错误,系统会在大多数情况下变得不稳定,而你真的无能为力。