com.google.gson.Gson.fromJson() 在 try-catch 块中被调用,但它仍然导致以下应用程序崩溃,尽管它很少发生?
java.lang.reflect.GenericSignatureFormatError:
at libcore.reflect.GenericSignatureParser.parseFieldTypeSignature (GenericSignatureParser.java:297)
at libcore.reflect.GenericSignatureParser.parseTypeArgument (GenericSignatureParser.java:374)
at libcore.reflect.GenericSignatureParser.parseOptTypeArguments (GenericSignatureParser.java:344)
at libcore.reflect.GenericSignatureParser.parseClassTypeSignature (GenericSignatureParser.java:317)
at libcore.reflect.GenericSignatureParser.parseFieldTypeSignature (GenericSignatureParser.java:289)
at libcore.reflect.GenericSignatureParser.parseForField (GenericSignatureParser.java:218)
at java.lang.reflect.Field.getGenericType (Field.java:177)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java:160)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java:102)
at com.google.gson.Gson.getAdapter (Gson.java:457)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java:117)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java:166)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java:102)
at com.google.gson.Gson.getAdapter (Gson.java:457)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java:117)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java:166)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java:102)
at com.google.gson.Gson.getAdapter (Gson.java:457)
at com.google.gson.Gson.fromJson (Gson.java:921)
at com.google.gson.Gson.fromJson (Gson.java:860)
有没有办法捕获 java.lang.reflect.GenericSignatureFormatError 以防止应用程序崩溃?
编辑:代码如下:
try{
...
foo = _gson.fromJson(bufferedReader, Foo.class);
...
}catch(Exception ex) {
...
}
也许我认为 catch(Exception ex) 捕获一切的假设是错误的。
洪先生,您可以通过以下方式处理。
try{
...
foo = _gson.fromJson(bufferedReader, Foo.class);
...
}catch(Exception ex) {
...
}
catch(Error err) {
...
}
一定要记住,类型错误的任何错误一样NoClassDefFoundError
,NoSuchMethodError
在捕捉(异常前)块没有抓到。但是错误是不可恢复的。您可以在您的 android 应用程序中显示一些弹出消息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句