En try
- catch
sintaxis, ¿importa en qué orden se escriben las declaraciones catch para FileNotFoundException
y IOExceptipon
?Orden de la declaración de captura?
Respuesta
Sí. FileNotFoundException se hereda de IOException. Las subclases de excepciones deben atraparse primero.
Sí, a excepción específica se debe escribir primero, más amplio después de eso,
es como se llama a todos los animales por primera vez en la habitación y después de probar para ver si hay alguna humana fuera
Para ejemplo
try{
//do something
}catch(Exception ex){
}catch(NullPointerException npe){
}
le dará el error de compilación tiempo
bien ... empezar desde subclase es a superclase ... esa es la manera ideal ... de lo contrario obtendrá código inalcanzable error
En una tangente, le aconsejaría pensar dos veces si necesita todos esos bloques de captura en primer lugar. ¿Estás seguro de que va a proporcionar un manejo significativo para cada caso de manera diferente? Si solo va a imprimir un mensaje, solo puede capturar IOException
para hacerlo.
Sí, por supuesto. La excepción más específica se debe escribir en el primer bloque catch y las excepciones genéricas como catch(Exception ex){ex.printStackTrace();}
se deben escribir en el conjunto final del bloque catch.
Si intenta hacer lo contrario, el compilador de JVM no podrá localizar su excepción específica.
IOException
es la clase superior de FileNotFoundException
. Por lo tanto, si coloca la declaración de captura para IOException
anterior que para FileNotFoundException
, entonces el código para la segunda captura será inalcanzable y el compilador arrojará un error
para eso. La razón es simple: every object of a sub class can be easily accepted by a super class reference
.
Deben detectarse excepciones específicas antes de una excepción general o de lo contrario recibirá un error de código inalcanzable. Por ejemplo -
try{
//do something
}catch(NullPointerException npe){
}catch(NumberFormatException nfe){
}catch(Exception exp){
}
Si coloca el bloque Exception
captura antes de que el bloque de NullPointerException
o NumberFormatException
captura, recibirá un error de tiempo de compilación. (Código inalcanzable).
IOException es la superclase de FileNotFoundException .So puño retén sub clase es decir FileNotFoundException y luego tienes que coger IOException
por ejemplo,
try{
// something
} catch(FileNotFoundException fne){
// Handle the exception here
} catch(IOException ioe) {
// Handle the IOException here
}
- 1. Implicits y orden de la declaración
- 2. Orden de captura de excepciones en Java
- 3. orden de combinación declaración de operación
- 4. Obtener propiedades en orden de declaración utilizando la reflexión
- 5. ¿Importa el orden de la declaración en models.py (Django/Python)?
- 6. ¿Es importante el orden de los bloqueos de captura?
- 7. Declaración de función y orden de evaluación de JavaScript
- 8. Cómo pasar la excepción atrapada en la captura interna a la captura externa en una captura de intento anidada
- 9. Mejores prácticas en IF/ELSE Orden de declaración
- 10. Orden de declaración en un bloque anónimo pl/sql
- 11. Captura de señal bash no detecta las variables modificadas después de la declaración del bloque 'trap'
- 12. .NET regex no captura en el orden esperado
- 13. Iterar a través de los miembros de la clase en orden de su declaración
- 14. ¿Retorno en bloque de captura?
- 15. ¿El orden del caso en la declaración de Switch puede variar el rendimiento?
- 16. SQL Server 'En' Declaración Artículo de la orden para el funcionamiento
- 17. Excepción de captura dentro Uso de la instrucción
- 18. C++ 11 Captura lambda por capturas de valor en el punto de declaración
- 19. Sintaxis: Declaración individual de declaración de la función
- 20. Captura de pantalla de la toma
- 21. Captura de pantalla de la pantalla actual
- 22. Captura de pantalla de la segunda pantalla
- 23. C# equivalente a la captura de VB.NET ... Cuando
- 24. ¿Qué sucede si un tiro? declaración se ejecuta fuera del bloque de captura?
- 25. Pregunta de la teoría de consultas SQL - consultas de declaración única vs consultas de declaración múltiple
- 26. Significado de la declaración de la función
- 27. ¿Pueden los miembros de salida de Doxygen purificarse por orden de declaración?
- 28. ¿Cómo puedo ordenar las implementaciones de métodos de acuerdo con su orden de declaración
- 29. de MySQL en la declaración
- 30. Desventajas de la declaración directa?
Una forma compila, el otro doesn 't. Te sugiero que lo intentes.;) –
También vale la pena señalar que si desea manejar 'FileNotFoundException' y' IOException' de la misma manera, puede capturarlos en el mismo bloque (siempre que esté utilizando Java SE 7 y superior) utilizando 'catch (FileNotFoundException | IOException ex) '[Ver este enlace] (http://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html) – Deco
@Deco' FileNotFoundException' ** es un ** 'IOException' . –