Seguidores

MIS WEBS



miércoles, 11 de abril de 2018

Control de errores en java


¿Que es un error para java?


Tal y como ya sabemos java es 100 por cien orientada a objetos POO acrónimo del ingles OOP (Object Oriented Programming). Y siendo así para java un error es un objeto y lo maneja como tal.

Existe una super Clase Error de la que heredan el resto. Por lo que ante la duda de algún error podemos buscarlo en la api de java donde se encuentran todas las clases.

En primer lugar debemos diferenciar en dos grandes grupos de errores

                Tiempo de compilación: Si la sintaxis de nuestro programa no es la correcta, se nos olvida un punto y coma, o un paréntesis, o una llave de cierre, o no pamos los parámetros a un método. Nuestro programa no llegará a compilarse eso quiere decir que no llegará a cargar. Para esto los entornos de desarrollo nos ayudan bastante avisandonos de fallos y autocompletando textos de métodos, pero a pesar de todo en ocasiones cometeremos errores que tardaremos un rato en ver como corregir esa sintaxis.

                Tiempo de ejecución: Nuestro programa tiene una sintaxis correcta por lo que se compilará pero al ejecutarse se precipita un error porque hemos cometido algún error en el algoritmo que hemos creado.  Todos estos errores heredarán de la clase Throwable.


                Heredando de la clase Throwable tenemos la clase Error y Exception.

                Error: Suelen ser errores de Harware falta de espacio en ordenador, no dispone de memoria para ejecutarlo… Con los conocimientos adquiridos podemos avisar al usuario con un JOptionPane.

                Exception: Son errores que acontecen una vez inicia el programa y se detiene en un punto por algún fallo. Entre otros existen dos grupos. IOException y RuntimeExcepcion.

                IOException: Son aquellos que no dependen del programador o excepciones comprobadas, alguien mueve un carpeta del sitio donde la busca el programa y al buscarlo el programa no lo encuentra. Para tratar estos errores java tiene el try/catch. Le diremos al programa haz lo que tiene el try y en caso contrario has lo que tiene el catch. En caso de que el programa necesite un try/catch y no lo hayamos incluido nosotros java nos avisará que existe un erro IOException (Unhandled exception type IOException).

URL ruta_imageIcon_ERROR =  Lamina_Menu_Superior.class.getResource("ImageIcon_warning_1.jpg");
                                       try {
                               ImageIcon ImageIcon_ERROR = new ImageIcon(ruta_imageIcon_ERROR);

                                       }catch(IOException e){
                               System.out.println("no se encuentra la imagen");
                                       }
                                      
                RuntimeException: Son errores de programación o errores no comprobados. Declaración incorrecta de variables, dar un valor superior al declarado a un array esto nos daría un error ArrayIndexOutOfBoundsException.

·         ArrayIndexOutOfBoundsException:

Has excedido el número índice del array.


InputMismatchException

 Hereda de RuntimeException
Es un error en el tipo de dato introducido en el programa, imaginemos que tenemos un formulario que tine una etiqueta (JtextTarea). Podriamos evitarlo realizando un Casting. Al heredar de Runtime exception no deberíamos utilizar try/catch.


ArithmeticException

Hereda de RuntimeException es una excepción no controlada o unchecked.
Excepción Aritmética. Se lanza cuando acontece una condición aritmética que no se puede cumplir. Imaginemos que tenemos una variable con un número entero (int) pero la dividimos por 0.

NumberFormatException

Hereda de RuntimeException es una excepción no controlada o unchecked.

Excepciones formato número. Se lanza cuando introducimos una cadena de texto (String) cuando se espera un formato número. O cuando nuestra variable espera que le introduzcamos un número entero (int) y recibe un decimal (float, double) o un numero mas grande de lo que espera (float).




URLMalformedException

Hereda de IOException . La URL está mal escrita.

EOFException

Hereda de IOException.
Nos indica que ha llegado al final de un archivo de una manera inesperada. Nuestro programa ha de leer un archivo de texto compuesto por 150 líneas pero cuando llega a la línea 100 ya no quedan mas líneas en nuestro fichero, alguien las ha borrado y nuestro programa java  no puede llegar al final del fichero (EOF)

NullPointerException

Hereda de IOException
Al heredar de IOException es un erreo Comprovado. Utilazaremos try/catch
Excepción de puntero nulo. Hemos declarado un objeto con un tratamiento de excepciones pero no hemos valorado la posibilidad de que la variable se queda vacia al no cargar.


Imaginemos que creamos un programa que necesita una imagen, con esta instrucción le diríamos que en caso de no existir que salga el mensaje :

URL ruta_imageIcon_ERROR =  Lamina_Menu_Superior.class.getResource("ImageIcon_warning_1.jpg");
                                       try {
                               ImageIcon ImageIcon_ERROR = new ImageIcon(ruta_imageIcon_ERROR);
                                       }catch(IOException e){
                               System.out.println("no se encuentra la imagen");
                                       }                              
Pero imaginemos que más a delante nuestro programa esta llamando al objeto imagen:

 ERROR = new JButton("ERROR",ImageIcon_ERROR);

En este caso nuestro programa se caería creando el objeto error NullPointerException. La forma de solucionarlo sería la siguiente, decirle que si existe la imagen que cargue el botón con ella y en caso contrario que el botón no tenga imagen:

if(ImageIcon_ERROR== null) {
             ERROR = new JButton("ERROR");
             }else {
iv class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm; text-align: justify;">              ERROR = new JButton("ERROR",ImageIcon_ERROR);
             }







Esquema control errores java


En el siguiente articulo os explico como craer nuestros objetos error para controlar mejor que pasa en nuestro programa de java.


No hay comentarios:

Publicar un comentario

Buscar este blog

Sandisk y Western Digital