Можно ли поймать java.lang.reflect.GenericSignatureFormatError? - PullRequest
0 голосов
/ 08 июня 2019

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) {
    ...
}

Возможно, мое предположение, что поймать (Исключениепр) ловит все не так.

Ответы [ 2 ]

2 голосов
/ 08 июня 2019

Хонг, вы можете справиться следующим образом.

try{
    ...
    foo = _gson.fromJson(bufferedReader, Foo.class); 
    ...
}catch(Exception ex) {
    ...
}
catch(Error err) {
    ...
}

Всегда помните, что любая ошибка типа Error, такая как NoClassDefFoundError, NoSuchMethodError, никогда не перехватывается в блоке catch (Exception ex). Однако ошибки неустранимы. Вы можете показать всплывающее сообщение в вашем приложении для Android.

1 голос
/ 08 июня 2019

Попробуйте использовать это -

try{

            //do your work here
        }catch (GenericSignatureFormatError e){
            e.printStackTrace();
        }

, чтобы избежать сбоя приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...