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 aplicar un Try Catch y Finally 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 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 Throw y throws en Java?¡Apuntate a nuestro campus y empieza a aprender con nosotros y con toda la comunidad!

Con Java no solo se desarrollan API´s, sino también interfaces de usuarios, juegos, y distintas aplicaciones, y a veces pueden ocurrir fallas.

Por lo tanto una parte fundamental del lenguaje se centra en el manejo de errores y como bien sabemos, Java todo lo maneja a través de objetos los fallos también.

El lenguaje Java utiliza excepciones para facilitarnos el manejo de errores.

Una excepción es un evento que se lanza cuando un programa interrumpe su flujo normal de instrucciones y coloquialmente dicho, se “cae”.

Para cada error o excepción, el lenguaje genera un objeto que pertenece a una clase, y esa clase, a su vez, hereda de otra superior.

En el caso de los errores o excepciones, la clase madre de todos ellos es Throwable, que contiene información del error que se ha producido.  

La clase Throwable tiene dos subclases o clases hijas, ErrorException.  

De la subclase Exception, derivan las clases hijas IOExceptionRuntimeException

y aquí es donde nos centraremos para explicar el Throwthrows.

Uso de de Throw y throws en Java

Las cláusulas Throw y throws, nos permiten controlar este tipo de excepciones. 

Con el uso de throw y el bloque try-catch en el método donde posiblemente se genere el error, "avisamos" a Java, capturamos el error y prevenimos que se congele el programa.  

La función de Throws es permitir al método que lo incluye, hacer dos cosas:

1- si todo va bien, devolvernos un objeto.  

2- si surge algún imprevisto, en vez de realizar su trabajo, va a lanzar una clase IOException, para capturar el error y poder continuar con el resto del programa.

Definir nuestra clase es muy simple

En el único parámetro que tiene el método constructor le pasamos el tipo de error que dio la excepción y el formato es:

**public static void main(String[] args)throws InterruptedException** (al lado de throws debemos poner el nombre que corresponda a la clase problemática, en este caso InterruptedException).

Con la palabra reservada throws, le avisamos a Java que es muy probable que en algún momento se produzca un error relacionado con las excepciones declaradas, se pueden declarar varias excepciones separadas por coma(,).

Throws también se usa cuando no queremos capturar ni evitar la excepción en el método que estamos utilizando, y llamamos a otro método donde sí la capturamos, a través del bloque try-catch.

Este bloque esta formado por dos instrucciones:

try{aquí escribimos la función a ejecutar}

catch{aquí capturamos la clase que dio la exception, colocando el mismo nombre del error dado}

y luego le asignamos una variable que será el nombre del objeto que vamos a crear para poder mostrarla luego.

Ejemplo del uso de estas cláusulas

{
    int[] misNúmeros = {
        1,
        2,
        3
    }; //declaramos un array de 3 posiciones

    System.out.println(mis Números[10]); //solicitamos que muestre 10 posiciones-> ERROR

}(Excepción e) { //la letra e representa todos los errores posibles

    System.out.println("Algo salió mal.");

Errores IOException y RuntimeException en Java

Los errores de tipo IOException, son excepciones de entrada/salida (flujos de datos que permiten la comunicación entre un programa y su entorno en el sistema) y se los conoce como excepciones comprobadas, estos no son culpa del programador. Por ejemplo en el programa hay una sentencia que debe leer un archivo, hemos puesto bien la ruta y no hay errores de sintaxis, pero alguien removió ese archivo y el programa no lo encuentra para utilizarlo. Cuando este es el tipo de error que se produce, Java nos obliga a capturarlo.

Los errores de tipo RuntimeException (esto es cuando se produce un error en alguna de las instrucciones de nuestro programa) son excepciones NO comprobadas y ocurren dentro de la máquina virtual de Java durante el tiempo de ejecución, generalmente son errores del programador, por ejemplo intentar cargar un dato en un array en la posición 5, cuando al declararlo le definimos 4 posiciones.

En este error, Java no nos obliga a hacer nada, pero como programadores, debemos mejorar el código para que no lance la excepción. 

En el momento en que se lanza una excepción Java genera un objeto, generalmente una clase que ya viene definida en la librería propia del lenguaje.

Algunas de las clases más comunes son:

Errores NO comprobados, Java no nos obliga a capturar este error, pero sí podemos mejorar el código.

ArithmeticException pertenece a la clase RuntimeException
ArrayIndexOutOfBoundsException pertenece a la clase RuntimeException
NullPointerException pertenece a la clase RuntimeException
InputMismatchException pertenece a la clase RuntimeException

Errores comprobados, en estos Java nos obliga a capturar el error para que el programa continúe.

FileNotFoundException pertenece a la clase IOException
ZipException pertenece a la clase IOException
MalformedURLExceptionpertenece a la clase IOException

Declaración de excepciones en Java

Cuando declaramos las excepciones, tenemos la posibilidad de escribir un método que no sea capturado por ellas, si no por otro método alojado en la pila de llamadas.

Java permite al programador lanzar excepciones mediante la palabra reservada throw y lo que se lanza es un objeto, que se crea como cualquier otro mediante la palabra reservada new.

Diferencia entre throw y throws en Java:

La sentencia throw se utiliza para lanzar explícitamente una excepción en una línea de código simple, o inclusive una excepción creada por el mismo desarrollador, la clase creada tiene que ser definida y “extendida” de la clase base Exception

if(n==0) throw new ArithmeticException("No se puede dividir entre cero");

Java hará escalar la excepción hacia arriba hasta hallar dentro de otro método un bloque de código que la capture (bloque try-catch), si no encuentra ese bloque de código para ejecutar, seguirá subiendo hacia el método inmediato superior a ver si lo encuentra allí, si no lo encuentra el programa se detiene.

La razón principal por la que se capturan las excepciones a través del bloque try ..catch, es para evitar que las mismas lleguen hasta el usuario y rompan nuestra aplicación.

Por lo tanto si la ejecución del bloque try genera una excepción, se detiene el programa y salta al bloque catch, allí se le pasa el nombre de la excepción como parámetro, de esta forma se puede extraer información para generar un log de errores, redirigir a una web en particular o también para promover la solución al tema de la manera más adecuada.

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