exceptions - java exception lesson
¿Qué significa "esquivar una excepción"? (4)
Bueno, agacharse simplemente significa bajar la cabeza para evitar ser golpeado o visto. En este caso, "esquivar una excepción" solo significa evitar que su código sea afectado por una excepción.
Para que su método no sea afectado por la excepción, lo tira más arriba en la pila de llamadas al declarar una excepción de throws
en su método
public void myMethod() throws IOException {
}
Si no te agachas, tienes que catch
:
public void myMethod() {
try {
// ...
} catch(IOException e) {
// handle exception
}
En la sección Ventajas de las excepciones de los tutoriales de Java ™:
Un método puede eludir cualquier excepción lanzada dentro de él, lo que permite un método más arriba en la pila de llamadas para atraparlo.
[...]
... esquivar una excepción requiere un poco de esfuerzo por parte de los métodos intermediarios. Cualquier excepción marcada que pueda arrojarse dentro de un método debe especificarse en su cláusula
throws
.
¿Qué significa "esquivar una excepción" aquí? Busqué en la web y FOLDOC (Diccionario de informática en línea gratuito) pero no encontré nada que pareciera prometedor.
Creo que agacharse significa volver a lanzar una excepción ... en otras palabras, ignorarlo esperando que alguien más lo maneje :)
Creo que significa que un método puede detectar una excepción y volver a lanzarla para que otro método la capture y la maneje según sea necesario. O simplemente lanzar una nueva excepción. O evita atrapar una excepción y deja que suba la pila de llamadas. El punto es tener un método que delegue el manejo de excepciones a otro método que podría ser más apropiado para manejar una excepción dada (por ejemplo, al tener acceso a los datos y / o estados necesarios). Pero (para java
) esto requiere declarar métodos con la cláusula throws
todo el tiempo, lo que se convierte fácilmente en un patrón
como se menciona en el comentario de @jmcg, literalmente " PATO simplemente significa bajar la cabeza para evitar ser golpeado o visto " (como hacen los patos en un río)
Para "esquivar una excepción" significa "no manejar la excepción". Esto realmente explica el nombre: pato significa "evadir, esquivar".
El método de eludir la excepción simplemente no lo maneja (porque, por ejemplo, no es su propósito) y deja que la excepción sea lanzada al método de llamada.
Por ejemplo, considere un método cuyo propósito es contar el número de líneas en un archivo. Esta sería una implementación simple (Java 8):
private static long numberOfLines(Path path) throws IOException {
try (BufferedReader br = Files.newBufferedReader(path)) {
return br.lines().count();
}
}
Tenga en cuenta que este método no maneja la IOException
arrojada por Files.newBufferedReader(path)
, porque ese no es el objetivo del método. Se agacha y deja que la persona que llama lo maneje apropiadamente.
Tenga en cuenta que la persona que llama también puede esquivar la excepción y dejar que la persona que llama la maneje, etc.