Tengo un código en Android en un método:

try {  
    something();  
    return obj;  
}
catch (Exception e) {   
    e.printStackTrace();
}
return null;

Cuando ejecuto la aplicación en modo de depuración, ambas declaraciones de retorno se ejecutan, incluso si finalmente no hay un bloque y el compilador necesita un segundo retorno (cuando lo limpio, el compilador dice "falta la declaración de retorno") ¿cómo puede ser esto posible? ¿Es este siempre el caso para los bloques de prueba, incluso sin finalmente?

0
Lara 26 jun. 2017 a las 17:46

3 respuestas

La mejor respuesta

Esto no es posible. El depurador acaba de mostrar que está fuera de su bloque try-catch. La línea resaltada no significa que se ejecute.

1
Al.Boldyrev 26 jun. 2017 a las 14:58

Imposible, comparta su código completo. Cada función ejecuta solo una declaración de retorno, es decir, cuando se encuentra la declaración de "retorno" en su función, la ejecución de la función se detiene y se devuelve un valor ya sea que el usuario lo haya definido o sea primitivo o que pueda decir que se envió al usuario.

-1
Shivam Arora 26 jun. 2017 a las 14:53

Necesita un segundo retorno (return null;) porque si "algo ()" arroja una excepción, entonces el primer retorno (return obj;) no se ejecutará

2
NikNik 26 jun. 2017 a las 14:56