Muy buenas foro,
En este tema entramos de manera teórica con las excepciones.
¿Que son las excepciones?
En Java, al igual que en muchos otros lenguajes de programación, las excepciones son errores de lógica o errores que suceden en hora de ejecución; cuando sucede algo que no se ha tenido en cuenta a la hora de crear un programa.
Por ejemplo, se espera que el usuario ingrese un valor numérico pero este ingresa uno alfabético.
Al saltar una excepción, si el programa no la maneja adecuadamente el programa se terminara en el acto, lo cual muchas veces no nos interesa. El control de excepciones sirve para ejecutar un “código de por si acaso” cuando una excepción salte.
No confundir con otros tipos de errores como de compilación (donde falla la sintaxis).
Ademas, las excepciones en java se representan con objetos, por lo que a la hora de tratar con ellos podremos usar varias cualidades de la POO.
Jerarquía de las excepciones
Las excepciones son como una patata caliente; se van pasando desde donde se originan a los métodos y clases llamadoras hasta llegar al método main de nuestro programa, si escala del método main y no se trata antes, el programa se rompe.
Tipos de excepciones
En Java, las excepciones se categorizan en dos grandes ramas;
- La clase
Exception
y todas las clases que heredan de ella deben ser manejadas obligatoriamente para que el programa compile. - Y la clase
RuntimeException
(la cual hereda deException
) y todas las clases que heredan de ella no tienen porque ser manejadas obligatoriamente, siendo opcional.
El sistema tiene una serie de Excepciones, pero, cada clase puede tener las suyas propias, al igual que nosotros podremos crear las nuestras.
Ejemplo
Por ejemplo, usando la clase Scanner
:
Usaremos esta simple clase de ejemplo donde se le pide al usuario un numero para luego imprimirlo.
ProbandoScanner.java
import java.util.Scanner;
public class ProbandoScanner
{
public static void main(String[] args)
{
Scanner entrada = new Scanner(System.in);
System.out.println("Ingresa un numero entero:");
int numero = entrada.nextInt();
entrada.close();
System.out.println("El numero ingresado es " + numero + ".");
}
}
Si nos fijamos en la documentación del método nextInt()
vemos que puede hacer saltar varias excepciones:
Al no haber ningún tipo de manejo de estas excepciones nos exponemos a que al saltar una de ellas por diversos motivos, el programa se rompa.
Interacción sin errores
Ingresa un numero entero:
7
El numero ingresado es 7.
Interacción con errores
Ingresa un numero entero:
Buenas >:)
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:964)
at java.base/java.util.Scanner.next(Scanner.java:1619)
at java.base/java.util.Scanner.nextInt(Scanner.java:2284)
at java.base/java.util.Scanner.nextInt(Scanner.java:2238)
at ProbandoScanner.main(ProbandoScanner.java:10)
Vemos que ha saltado la excepción InputMismatchException
en la linea 10 del programa.
Al saltan la excepción con el método nextInt()
el programa se termina automáticamente y no ejecuta ninguna otra linea.
En el siguiente tema veremos el manejo de excepciones; usando las estructuras try-catch
y throws
, ademas de interactuar con estas mediante sus métodos.