10.1 INTRODUCCIÓN A LAS EXCEPCIONES

 

Hola a todos una vez más a un nuevo bloque de Java en el cual vamos a ver las Excepciones.

A la hora de programar en cualquier lenguaje de programación se pueden cometer errores, no solo a la hora de programar, sino, después de haber creado el programa cuando éste entra en funcionamiento puede ocurrir diversos errores que conviene detectar y clasificar para poder manejarlos y que de esta forma nuestros programas no se caigan y sigan su funcionamiento a pesar de haber ocurrido un error.

Antes de adentrarnos más en este tema vamos a ver los tipos de errores que se pueden cometer:



Hay dos tipos de errores: el de tiempo de compilación que es el que comete el programador, bien porque ha escrito mal una instrucción, se ha olvidado de poner un punto y coma, el no cerrar bien las llaves, etc.

Luego hay otro tipo de error que se produce a la hora de la ejecución del programa, cuando se está ejecutando, se crea un objeto de tipo Error, es a partir de la clase Throwable donde tenemos la jerarquía de clases donde se manejan los errores, debajo de la clase Throwable hay dos clases: Error y Exception. Cuando error hereda de la clase Error normalmente quiere decir que se ha producido un error de hardware, por ejemplo, no hay suficiente espacio en el disco duro que se está ejecutando el programa o un error en la memoria del ordenador, etc.

El manejo o control de los errores en Java se centra en la clase Exception que es aquí donde los podemos controlar, debajo de la clase Exception hay dos clases: IOException y RuntimeException.

La clase IOException son excepciones comprobadas que no son culpa del programador. Por ejemplo, si en nuestro programa hay una imagen a la hora de ejecutar esta aplicación la imagen no se encuentra porque alguien la ha movido de carpeta.

La clase RuntimeException son excepciones no comprobadas, son errores por parte del programador, por ejemplo, recorrer un array con más posiciones de las que se creó o almacenar en una variable String un dato de tipo entero, etc.

Vamos a verlo mediante una práctica, nos creamos un nuevo proyecto al que llamamos Excepciones, dentro de este proyecto un paquete al que llamamos er, dentro de este paquete irán nuestros ejemplos o prácticas de este bloque, creamos la primera clase a la que llamamos fallos con el siguiente código:

package er;

 

import javax.swing.JOptionPane;

 

public class fallos {

 

      public static void main(String[] args) {

           

            int[]mi_matriz = new int[5];

           

            mi_matriz[0]=2;

            mi_matriz[1]=15;

            mi_matriz[2]=24;

            mi_matriz[3]=58;

            mi_matriz[4]=92;

           

            for(int i=0; i<5; i++) {

                 

                  System.out.println("Posición "+ i +" = "+mi_matriz[i]);

            }

           

            String nombre = JOptionPane.showInputDialog("Introduce tu nombre");

            int edad=Integer.parseInt(JOptionPane.showInputDialog("Introduce tu edad"));

           

            System.out.println("Hola, tu nombre es: "+nombre+" y tienes "+edad+" años.");

            System.out.println("El programa termino su ejecución");

 

      }

 

}

Se trata de una aplicación en la que creamos un array, con un for la recorremos y nos la imprime en consola, posteriormente mediante una ventana de JOptionPane nos pide el nombre y la edad, con un System.out nos imprime el nombre y la edad en consola y con otro System.out nos indica que el programa ha finalizado. Si ejecutamos está aplicación vemos que funciona correctamente, comprobamos en la consola:



Se ha comentado al principio que hay dos tipos de errores: el de tiempo de compilación que es el error de sintaxis y el de tiempo de ejecución. Vemos primero el de tiempo de compilación, imaginad que eliminamos un punto y coma en alguno de los elementos del array:



Ya nos marca un error, si nos posicionamos sobre él:



Nos indica que tenemos que insertar el punto y coma, pero si lo ejecutamos igualmente el error que nos marca es el siguiente:



Nos indica que es un error de compilación, es un error de sintaxis porque falta el punto y coma y el número de línea de código donde se encuentra el error.

Otro error de compilación sería que en el System.out que está dentro del for si escribiéramos mal mi_matriz:



Si nos situamos sobre el error, nos indica que no reconoce la variable:



Si lo ejecutamos:



Como en el anterior error, es un error de compilación, no reconoce la variable y el número de la línea de código donde se encuentra el error.

Estos errores se llaman de compilación porque no llegan a compilarse, es decir, no se llega a crear el archivo .class.

Los errores en tiempo de ejecución serían, por ejemplo, si añadimos una posición más al array:



No me está marcando ningún error ya que no hay nada mal escrito, pero a la hora de ejecutar el programa:



Me indica que hay un error,  al ejecutarse se ha creado un objeto de tipo error que está dentro de la clase ArrayIndexOutOfBoundsException que nos indica que el error está en el índice de los elementos del array y el número de la línea del código donde se encuentra.

Este tipo de error es de tipo RuntimeException (excepciones no comprobadas) se dice que este error es por culpa del programador ya que debería haberse dado cuenta de no declarar más posiciones de las que se había declarado el array.

Hay otro tipo de excepciones IOException (excepciones comprobadas) en las que el programador no tiene nada que ver, este tipo de errores Java ya las tiene contempladas. Un ejemplo sería una aplicación en la que se tiene que mostrar una imagen, la imagen está ubicada en una carpeta, el código está creado de forma que la imagen se coge de esta carpeta, sin embargo, otro programador ha quitado la imagen de sitio o la ha borrado, de forma que al ejecutar la aplicación no se va a mostrar la imagen pero se va a ejecutar de todas formas indicando el error, como Java esto ya lo tiene contemplado obliga a declarar el bloque:

try {

}catch  {

}

Lo que hay dentro del bloque try es lo que se ha de ejecutar sería la ruta donde está ubicada la imagen, si lo que hay dentro de try no se ejecuta correctamente porque la imagen no se encuentra se ejecuta lo que hay dentro del catch que captura el error nos muestra el motivo por el cual no se ha ejecutado.

Seguimos viendo el bloque try.. catch en los siguientes post. Os espero, hasta pronto!

9.4 JAVA WEB START << >> 10.2 THROWS / TRY / CATCH I



No hay comentarios:

Publicar un comentario