Control Errores java
Diferencia entre throw y throws
La clausula throws la utilizaremos para crear un método que pueda
tener una excepción.
Public Static Método(parametros) throws IOExceptions{
try{
//Código en caso
de que el método funcione
}catch(IOException e){
//Código en caso de error en
el método
}
}
La clausula throw la utilizaremos para lanzar una
excepción en un punto determinado del programa para controlar un determinado error que no deseamos que se cometa. Con ello conseguiremos que si
el programa no cumple con lo que deseamos se caiga, podemos escoger una que
exista o crearla nosotros mismos.
En el siguiente ejercicio le
decimos que si el numero que introduzcamos e mayor a cien se caiga nuestro
programa con un error ArrayIndexOutOfBoundsException.
public class
UsoDeThrow {
public static void main(String[] args) {
int numero=Integer.parseInt(JOptionPane.showInputDialog("introduce número entre 0 y
100"));
if(numero>100)
{
throw new ArrayIndexOutOfBoundsException();
}else {
System.out.println(numero);
}
}
COMO CREAR NUESTRAS EXCEPCIONES
La verdadera utilidad que puede
tener el lanzar excepciones propias con throw
es crear nuestro propios errores porque no siempre nos valen los creados por
defecto. A demás nos permite crear
nuestro propios errores que identificaremos más fácil mente. Creariamos una
clase que herede de la que mejor nos venga:
·
IOException en caso de que sean excepciones comprobadas.
·
RuntimeException en caso de que sea un error no
comprobado.
public class UsoDeThrow {
public static void main(String[] args) {
numero=Integer.parseInt(JOptionPane.showInputDialog("introduce número entre 0 y
100"));
if(numero>100)
{
throw new
ErrorExcesoNumero("el
numero introducido ha de estar comprendido entre 0 y 100");
}else {
System.out.println(numero);
}
}
}
class ErrorExcesoNumero extends RuntimeException{
public ErrorExcesoNumero() {}
public ErrorExcesoNumero(String texto_error) {
super(texto_error);
}
}
El error nos saldría así por la
ventana de inmediato, tal y como podéis comprobar el texto del error es el que
le hemos indicado algo que nos puede facilitar infinitamente el trabajo:
Exception
in thread "main" ErrorExcesoNumero: el numero introducido ha de estar
comprendido entre 0 y 100
at UsoDeThrow.main(UsoDeThrow.java:12)
En el siguiente caso deseamos
tener un texto impreso en consola y nuestro fallo, para ello crearemos un método
que utilice nuestro error
import javax.swing.JOptionPane;
public class
UsoDeThrow {
public static void main(String[] args) { numero=Integer.parseInt(JOptionPane.showInputDialog("introduce número entre 0 y
100"));
try {
EsteError();
System.out.println(numero);
} catch (ErrorExcesoNumero e) {
System.out.println("Error al introducir datos en
el JOptionPane\n");
e.printStackTrace();
}
}
static int numero;
public static void EsteError() throws ErrorExcesoNumero{
if(numero>100)
{
throw new
ErrorExcesoNumero("el
numero introducido ha de estar comprendido entre 0 y 100");
}
}
}
class ErrorExcesoNumero extends Exception{
public ErrorExcesoNumero() {}
public ErrorExcesoNumero(String texto_error) {
super(texto_error);
}
}
Nos aparecerá en Consola:
Error al
introducir datos en el JOptionPane
ErrorExcesoNumero:
el numero introducido ha de estar comprendido entre 0 y 100
at UsoDeThrow.EsteError(UsoDeThrow.java:25)
at UsoDeThrow.main(UsoDeThrow.java:12)
Métodos de la clase error:
getMessage(): Nos indica el dato que comete el error
getClass() . getName(): nos indica la clase que lanza el error
Por lo que esto nos permite jugar con los tipos de errores de una forma más amplia.
public static void main(String[] args) {
int num,divid, resultado;
num=500000000;
divid=-2;
resultado = num*divid;
System.out.println(resultado);
numero=Integer.parseInt(JOptionPane.showInputDialog("introduce número entre 0 y 100"));
try { EsteError();
System.out.println(numero);
} catch (ErrorExcesoNumero e) {
System.out.println("Error al introducir el numero " +numero+ " en el JOptionPane : "+ e.getMessage());
System.out.println("Es te error pertenece a la clase: "+e.getClass().getName());
//e.printStackTrace();
}
}
El mensaje en consola sería el siguiente:
-1000000000
Error al
introducir el numero 250 en el
JOptionPane : el numero introducido ha de estar comprendido entre 0 y 100
Es te
error pertenece a la clase: ErrorExcesoNumero
Eclipse posee su depurador de errores si quereis ver como funciona
pulsar aquí ⏩
Eclipse posee su depurador de errores si quereis ver como funciona
pulsar aquí ⏩
No hay comentarios:
Publicar un comentario