Curso básico de Java - #22 - Excepciones: Crear y lanzar excepciones

Buenas,
En este tema vamos a ver como lanzar excepciones y como crear excepciones propias.


Lanzar excepciones
Como ya se ha comentado en otros temas las excepciones son Clases, por lo que lo que se lanza es un objeto de las mismas.

Se usa la clausula throw:

Sintaxis
throw [objeto];
Ejemplo
throw new Exception();

o

ArithmeticException miExcepcion = new ArithmeticException();
throw miExcepcion;

Esto hara saltar una excepción que tendrá el mismo comportamiento que cualquier otra.

Ademas, el constructor de todas las excepciones permite pasar un String como parametro que sera el mensaje de error de la excepción, el cual luego podrá recuperarse con el metodo .getMessage():

Ejemplo
try
{
	throw new Exception("Mensaje de error :/");
}
catch(Exception e)
{
	System.out.println(e.getMessage());
}

Output:

Mensaje de error :/

Crear excepciones
Bien, ya sabemos lanzar excepciones procedentes de clases que existen, ahora nos toca crear excepciones propias.

Esto es muy sencillo; basta con crear una clase que herede de Exception o de RuntimeException dependiendo de que características queremos que herede.

Por ejemplo

ErrorFatal.java
public class ErrorFatal extends Exception
{
	public ErrorFatal()
	{
		super();
	}
	
	public ErrorFatal(String s)
	{
		super("! Error fatal: " + s);
	}
}

Ahora veamos como lanzar una excepción de esta clase (ErrorFatal) desde otra clase.

LanzandoExcepciones.java
public class LanzandoExcepciones
{
	public static void main(String[] args) throws ErrorFatal
	{
		// El numero debe tener siempre  un valor entero de entre 0 y 10.
		int num = 15;
		
		if (num < 0 || num > 10)
		{
			throw new ErrorFatal("El valor recibido en mas pequeño que 0 o mas grande que 10.");
		}
	}
}

Output:

Exception in thread "main" ErrorFatal: ! Error fatal: El valor recibido en mas pequeño que 0 o mas grande que 10.
	at LanzandoExcepciones.main(LanzandoExcepciones.java:11)

Al igual que cualquier recuso cuando tratamos con diferentes clases, si la clase de la excepción y la clase llamadora no se encuentran en el mismo paquete la ultima tendrá que importar a la primera.


Bueno amigos, este es el principio del fin, ya he abarcado la mayoría de la teoria que tenia planteada, a excepción de alguna clase que me parece importante aprender a utilizar. En los siguientes temas ire subiendo alguna clase como Random, Math, FileReader junto a BufferedReader, FileInputStream junto a InputStreamReader, y alguna otra. Ademas de subir algún ejercicio que englobe todo el conocimiento impartido del curso.

Por lo pronto, en el siguiente tema veremos la clase Math, crucial para hacer cálculos complejos de manera sencilla en java

1 me gusta