static int retIntExc() throws Exception{
int result = 1;
try {
result = 2;
throw new IOException("Exception rised.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());
result = 3;
} finally {
return result;
}
}
Un amigo mío es un desarrollador .NET y actualmente está migrando a Java y me hace la siguiente pregunta sobre esta fuente. En teoría, esto debe ser throw IOException("Exception rised.")
y todo el método retIntExc()
debe throws Exception
. Pero no ocurre nada, el método devuelve 2.Se omite la excepción finalmente
No he probado su ejemplo, pero creo que este no es el comportamiento esperado.
EDIT: Gracias por todas las respuestas. Algunos de ustedes han ignorado el hecho de que el método se llama retIntExc
, lo que significa que este es solo un ejemplo de prueba/experimental, que muestra un problema en la mecánica de lanzar/atrapar. No necesitaba 'arreglar', necesitaba una explicación de por qué sucede esto.
¿Por qué no lo declara 'throws IOException'? – BoltClock
http://stackoverflow.com/questions/65035/in-java-does-return-trump-finally –