how - soap handler example in java
try catch exception siempre devuelve null (4)
Tengo un problema con Android. Desarrollo en dispositivo y tengo problemas para detectar excepciones. Estoy ejecutando un código en AsyncTask y finalmente lo simplifiqué a:
try
{
if (true)
throw new Exception("ERROR");
}
catch (Exception e)
{
Log.e("e", "exception", e);
}
Mi problema es que la variable ''e'' siempre es nula. No estoy seguro de lo que está pasando en realidad. Además, a veces funciona, pero no puedo decir cuándo. Me levanto de la computadora por unos minutos y luego, boom, funciona. Hacer la codificación unos minutos y nuevamente es nulo ... Hubo una pregunta en SO hace aproximadamente 1 año, pero ninguna respuesta conocida. Quizás esta vez alguien tenga una idea.
Creo que tiene algo que ver con AsyncTask como fuera de él, obtuve la excepción atrapada correctamente ... todavía no tengo ni idea de por qué :( Descubrí que solo ocurre cuando se conecta Debbuger. Cuando saco el cable del dispositivo en realidad atrapa y la excepción ya no es nula ...
Es imposible tener e
con valor nulo en ese punto. Si está depurando su aplicación usando Eclipse, mostrará el valor e.toString()
en ese punto y e.toString()
devolverá null
.
Pruebe con otra prueba, usando este código:
try {
if (true) {
throw new Exception("ERROR");
}
}
catch (Exception e) {
if (e == null) {
Log.e("e", "e is really null!!!");
}
else {
Log.e("e", "e is not null, toString is " + e + " and message is " + e.getMessage());
}
}
Sé que esta es una vieja pregunta, pero esto también me sucedió a mí, ¡y parece que el problema está en el depurador mismo!
Cuando ejecuto mi aplicación desde eclipse ( ctrl + F11 ), capta una excepción adecuada ( e != null
).
Tuve el mismo problema ... descubrí que era el depurador como lo habían dicho otras personas. Entonces, lo que hice para depurar fue simplemente poner el punto de quiebre en la primera línea del bloque catch, en lugar de ponerlo justo en el bloque catch. ¡Pareció funcionar para mí!
Tenía exactamente el mismo problema extraño dentro de AsyncTask, mientras depuraba en un dispositivo real (Galaxy Tab 2). (Y sí, tengo "e is really null!!!"
haciendo la prueba sugerida por @italo)
Para mí, el problema desapareció misteriosamente después de desenchufar el conector usb del dispositivo Android y volver a conectarlo luego (y luego volver a ejecutar mi aplicación).
Otra sugerencia, limpiar y reconstruir el proyecto, como se explica aquí no lo resolvió para mí (pero tal vez para otra persona).