Otras lecciones del Curso de Java
¿Qué es IO en Java?
¿Cúales son los Operadores en Java?
¿Qué tipos de Variables hay en Java?
¿Cómo funciona Continue y Break en Java?
¿Cómo utilizar el método super en Java?
¿Cómo trabajar con listas en Java?
¿Cuáles son los métodos de la clase String en Java?
¿Qué es un entorno de desarrollo en Java?
¿Qué es la Sobreescritura de métodos en Java?
¿Cómo utilizar un return en Java?
¿Cómo hacer un Hola Mundo en Java?
¿Cómo utilizar Throw y throws en Java?
¿Cómo hacer comentarios en Java?
¿Cuáles son las Palabras reservadas en Java?
Variables de entorno en Java
Características y estadísticas de Java e índice TIOBE
Estructura de proyecto, paquetes y clases en Java
Qué es una función en Java
¿Cómo funcionan las Funciones Java?
Operadores aritméticos en Java
Operadores de comparación en Java
Funciones anónimas en Java
Cómo invocar una función en Java
Atajos de teclado para IntelliJ
¿Qué es la Sobrecarga de funciones en Java?
Operadores lógicos en Java
Debug en Java
Como se crea una función en Java
¿Cómo crear Sentencias Switch en Java?
Bucles for en Java
¿Cómo hacer sentencias If e If else en Java?
¿Cómo funcionan los Bucles While en Java?
¿Qué son los objetos en Java?
¿Qué es el modificador static en Java y cómo se utiliza?
¿Qué es la herencia en Java?
¿Qué son los constructores en Java y cómo se utilizan?
¿Cómo crear clases en Java?
¿Qué es el Polimorfismo en Java?
¿Qué son las Clases Abstractas en Java?
¿Qué es la Programación genérica en Java?
¿Qué son las Interfaces de Java?
Implementación de una interface en Java
¿Cómo se hace refactoring en Java?
¿Cómo trabajar con Maps en Java?
¿Como funcionan los arrays en Java?
¿Cómo generar excepciones en Java?
¿Qué es la clase Scanner en Java?
Introducción a Swing en Java
¿Quieres descubrir más cosas como Try catch finally en Java?¡Apuntate a nuestro campus y empieza a aprender con nosotros y con toda la comunidad!

Hay determinados errores que se pueden dar dentro de un programa como por ejemplo la división por cero, la falta de memoria para asignar en el sistema, ingresar un dato distinto al esperado, etc. que derivan en una excepción (Exception).

¿Qué son las excepciones en Java?

La excepción (Exception) es un tipo de clase de Java, que nos informa de una anomalía que causa que el programa no funcione correctamente o que termine antes de lo esperado.

El manejo de excepciones lo que va a permitir es que mi programa pueda continuar, aún después del error.

Existen dos tipos de excepciones:

  • Las RunTime Exception (excepciones NO verificadas): que son mayormente errores del programador, como puede ser no haber contemplado la división por cero.
  • Las IOException (excepciones verificadas): que son errores de entrada y salida como lo sería leer un archivo que no existe.

Cuando una excepción ocurre, Java nos da la posibilidad de evadir ese error en el programa, capturándolo para tratarlo y mejorar nuestro código.

Para estas situaciones, Java tiene un sistema de tratamiento de errores o excepciones incorporado, que es un conjunto de clases que a través de unas palabras reservadas nos ayudan a gestionar el manejo de errores.

Palabras reservadas para excepciones en Java

Las palabras reservadas más utilizadas para esta tarea, aunque hay varias más, son:

  • try
  • catch
  • finally

Aunque no es obligatorio capturar estas excepciones que suceden en escasas ocasiones, el tenerlas en cuenta nos permite crear programas más robustos y con más tolerancia a fallas.

El uso de las palabras antes mencionadas nos permite “capturar” el error. Estas palabras forman “bloques” de código para realizar la captura. 

¿Cómo utilizar la excepciones en Java?

Supongamos que queremos que se ingresen dos números y realizar con ellos una división, sabemos que es muy probable que se ingrese por error un 0 (cero) en el divisor, eso lanzaría una excepción y detendría nuestro programa, lo terminaría con un mensaje de error del tipo “ArithmeticException”.

Lo que vamos a hacer para que nuestro programa continúe, es utilizar los bloques mencionados.

Podemos capturar este error empleando un bloque try{}, dentro de las llaves pondremos el código (instrucciones) que queremos que se ejecute.

Seguido de este, pondremos un bloque catch{} aquí entre las llaves, “capturaremos” la excepción, y le daremos una instrucción alternativa, por ejemplo que nos informe qué tipo de error ha ocurrido.

Al capturar la excepción, nuestro programa podrá continuar con la siguiente instrucción dentro del código.  

Al final del bloque catch, agregamos el bloque finally{} esta porción del código siempre se ejecutará haya ocurrido un error o no.

El objetivo del finally es cerrar todos los recursos que se estaban utilizando para evitar consumo de los mismos de forma innecesaria. Además puede emplearse incluso sin bloques catch.  

Un recurso que no se libera impide que otro programa lo pueda utilizar. 
Ejemplo:
Este sería el error que entrega la división por cero:

Exception in thread “main” java.lang.ArithmeticException: /by Zero
at com.company.TryCatchMain.main(TryCatchMain.java:8)

Y este es el código que deberíamos implementar:

try {
    int result = 5 / 0; //esta instrucción lanzaría una excepción.
} catch (Exception e) { //dentro de los paréntesis colocamos la excepción con su nombre exacto o nombre de la clase superior, en este caso Exception, la e va a guardar la información de este error.
    e.printStackTrace(); //y con esta instrucción se mostrará por pantalla cuál fue el error
} finally {
    System.out.println(“Cierre de recursos”);
}

// resto del programa

Observación: la palabra Exception es el nombre de la clase mayor que contiene a las subclases contempladas como excepciones por el lenguaje, también podemos colocar el nombre de la subclase que fue lanzada por Java (ArithmeticException), lo que es más específico y muestra con mayor claridad lo que sucedió.

¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: