Seguidores

MIS WEBS



Mostrando entradas con la etiqueta throws. Mostrar todas las entradas
Mostrando entradas con la etiqueta throws. Mostrar todas las entradas

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í



USO DE LAS CLAUSULAS THROWS, TRY, CATCH Y FINALLY PARA TRATAMIENTO DE EXCEPCIONES IOException


COMO UTILIZAR EL TRATAMIENTO DE EXCEPCIONES



En el siguiente artículo rápido os explicare como funciona  throws / try / catch en java y como utilizarlos para el tratamiento de excepciones en nuestros programas.

Cuando un método contiene la clausula throws, el método hará dos cosas si todo es correcto realizará la primera parte del método en caso de que no sea así realizará lo que indiquemos.
Cuando existe un fallo en nuestro programa con la clausula throws crearemos un objeto de la clase IOException que a su vez hereda de la clase error.  


Este objeto IOexception nos ayudará a realizar el tratamiento de errores. Para ello disponemos de try y del catch. Que poniendo un símil a lo bruto es como un if y un elseif del error. Cuando aparezca un error lo capturará el catch.

Sintaxis



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
  }
}



Cláusula finally


Existaran casos en los que cuando realicemos un try catch necesitemos incluir una condición que se cumpla siempre exista error o no. Imagina que estas conectando a una BBDD externa y a mitad del try se cae el programa, en ese caso la BBDD no se cerraría y estarí gastando recursos.

Sintaxis conexión a BBDD:

try {
Abrimos conexión BBDD;
       Ejecutamos SQL;
       Almacenamos datos en un resulset(tabla virtual o tabla intermedia);
       Accederemos y Leeremos nuestro resulset;
       Creamos resulset;
       } catch (SQLException e) {
       Instrucciones de control de excepción;
       }finally{
       Cerramos conexión a BBDD;
       }



Buscar este blog

Sandisk y Western Digital