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