Seguidores

MIS WEBS



viernes, 13 de abril de 2018

Lanzar excepciones con Java


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"));
             tryEsteError();
                    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í



No hay comentarios:

Publicar un comentario

Buscar este blog

Sandisk y Western Digital