lunes, 3 de diciembre de 2018

Excepciones en Java 2/2

Continuando con el tema de Excepciones que empezamos en el artículo Excepciones en Java 1/2 hablaremos de los bloques try, catch, finally y la declaración try-with-resources la cual es particularmente adecuada para situaciones que usan recursos de Closeable.

Bloque try: El primer paso para construir un controlador de excepciones es encerrar el código que podría generar una excepción dentro de un bloque try.

try {
        código
}bloques catch y finally . . .

El segmento código contiene una o más líneas legales de código que podrían generar una excepción.

Si ocurre una excepción dentro del bloque try, esa excepción es manejada por un controlador de excepciones asociado con él. Para asociar un controlador de excepciones con un bloque try, debe poner un bloque catch después de él.

Bloque catch: Usted asocia los controladores de excepciones con un bloque try al proporcionar uno o más bloques catch directamente después del bloque try. Ningún código puede estar entre el final del bloque try y el comienzo del primer bloque catch.

try {

} catch (ExceptionType name) {

} catch (ExceptionType name) {

}

Cada bloque catch es un controlador de excepciones que maneja el tipo de excepción indicado por su argumento. El tipo de argumento, ExceptionType, declara el tipo de excepción que el manejador puede manejar y debe ser el nombre de una clase que hereda de la clase Throwable. El manejador puede referirse a la excepción utilizando name.

El bloque catch contiene código que se ejecuta cuando se invoca el controlador de excepciones. Los manejadores de excepciones pueden hacer más que solo imprimir mensajes de error o detener el programa. Pueden realizar la recuperación de errores, pedir al usuario que tome una decisión o propagar el error hasta un controlador de nivel superior utilizando excepciones encadenadas.

En Java SE 7 y versiones posteriores, un solo bloque catch puede manejar más de un tipo de excepción. En la cláusula catch, especifique los tipos de excepciones que el bloque puede manejar y separe cada tipo de excepción con una barra vertical (|):

catch (IOException | SQLException ex) {
    logger.log(ex);
    throw ex;
}

Nota: Si un bloque catch maneja más de un tipo de excepción, entonces el parámetro catch es implícitamente final. En este ejemplo, el parámetro catch ex es final y, por lo tanto, no puede asignarle ningún valor dentro del bloque catch.

Bloque finally: El bloque finally siempre se ejecuta cuando el bloque try sale. Esto asegura que el bloque finally se ejecute incluso si ocurre una excepción inesperada. Pero, finalmente, es útil para algo más que el manejo de excepciones: permite al programador evitar que un código de limpieza se omita accidentalmente con una devolución, una continuación o una interrupción. Poner el código de limpieza en un bloque finally es siempre una buena práctica, incluso cuando no se prevén excepciones.

Declaración try-with-resources: La declaración try-with-resources es una declaración try que declara uno o más recursos. Un recurso es un objeto que debe cerrarse después de que el programa haya terminado con él. La declaración try-with-resources asegura que cada recurso se cierre al final de la declaración. Cualquier objeto que implemente java.lang.AutoCloseable, que incluye todos los objetos que implementan java.io.Closeable, puede usarse como un recurso.

static String readFirstLineFromFile(String path) throws IOException {
    try (BufferedReader br = new BufferedReader(new FileReader(path))) {
        return br.readLine();
    }
}

Veamos como se vería los bloques try-catch-finally juntos:

try {
     // Código que puede lanzar una excepción
}catch(TipoExcepcion e){
    // Código para manejar la excepción
}finally {
   // Código que se ejecuta al final se lance o no una excepción
}

En mi repositorio de GitHub de Programación Orientada a Objetos puedes encontrar ejemplos concretos en la sección de excepciones.

No hay comentarios:

Publicar un comentario

Instalación NodeJS

Ingresamos a la página oficial de NodeJS donde lo descargaremos  https://nodejs.org/en/download/ Escogemos el instalador que se ajuste a ...