32. Excepciones

Cuando escribimos un codigo y luego le damos a ejecutar ese codigo y en la consola nos salen esas letras rojas tan inoportunas y desagradables, eso es un error en tiempo de ejecucion, en la que representa algo erroneo que impide que el programa siga ejecutandose y este se pare, a eso lo llamamos excepciones.

 

Hay dos tipos de excepciones, una se llama "Error" y es fallo causado por el sistema, y el otro se llama "Excepcion" y es causado por un error de nuestro codigo.

El primer tipo, nosotros no lo podemos tratar, sin embargo, si podemos capturar las excepciones causadas por una mala implementacion del codigo.

Vamos a ver un ejemplo mediante un codigo. Escribe este codigo y ejecuta el programa. Te pedira que ingreses un numero, es el numero de palabras que quieres visualizar en consola. Primero ingresa un 4 y ejecuta, luego, vuelve a ejecutar el programa e ingresa un 5 a ver que pasa:

 

import java.util.Scanner;
 
public class Excepciones {
 
    public static void main(String[]args){
 
        Scanner scan = new Scanner(System.in);
 
        String []arreglo={"Esto ","es ","un ","arreglo"};
 
        System.out.println("Ingresa el numero de palabras a mostrar: ");
 
            int num = scan.nextInt();
            for(int i=0; i<num; i++){
                System.out.print(arreglo[i]+" ");
            }
 
    }
}
 
 
En el primer caso, cuando ingresaste un 4, el programa printo por pantalla de consola las palabras:
 
Esto es un arreglo
 
Sin embargo, cuando ingresaste el 5 o mas, el programa printo por pantalla de consola lo siguiente:
 
Esto es un arreglo
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
...
 
Con letras rojas y desagradables y algo mas... 
 
En este ultimo, el programa a detectado una excepcion, que es, que el arreglo no dispone de mas de cuatro elementos, por tanto, si ingresamos mas de 4 nos dara una excepcion en el codigo.
Para tener mas control de las excepciones del codigo, se usan estos bloques:
 
try{
 
}catch(){
 
}
 
 
Que significa:
 
 
try{
    // intenta hacer esto
}catch( tipo de excepcion ){
    // y si hay error, hacer esto...
}

 

El mismo codigo de antes lo podemos dejar de la siguiente forma:

 

import java.util.Scanner;
 
public class Excepciones {
 
    public static void main(String[]args){
 
        Scanner scan = new Scanner(System.in);
 
        String []arreglo={"Esto ","es ","un ","arreglo"};
 
        System.out.println("Ingresa el numero de palabras a mostrar: ");
        try{
            int num = scan.nextInt();
            for(int i=0; i<num; i++){
                System.out.print(arreglo[i]+" ");
            }
        }catch(Exception ex){
            ex.printStrackTrace();
        }    
    }
}
 
 
Con esto, conseguimos capturar la excepcion y con la expresion "ex.printStrackTrace()", nos dice el tipo de excepcion que ha tendido lugar. Sin embargo, podemos personalizar esta excepcion, si intuimos cual podria ser el error de codigo, escribiendo lo siguiente:
 
 
import java.util.Scanner;
 
public class Excepciones {
 
    public static void main(String[]args){
 
        Scanner scan = new Scanner(System.in);
 
        String []arreglo={"Esto ","es ","un ","arreglo"};
 
        System.out.println("Ingresa el numero de palabras a mostrar: ");
        try{
            int num = scan.nextInt();
            for(int i=0; i<num; i++){
                System.out.print(arreglo[i]+" ");
            }
        }catch(Exception ex){
            System.out.println("\nSolo existen 4 elementos en nuestro arreglo");
        }    
    }
}
 
 

De esta forma tenemos mas claridad en la excepcion. Intenta ejecutar el codigo ahora, a ver que pasa.

 

El tema de las excepciones es mucho mas extenso. Puedes agregar mas bloques "catch" y poner un "finally" y en las clases de excepcion hay muchas variedades, pero para este curso, con esto, es suficiente.

Ahora en el siguiente tema, pasemos a la parte mas divertida que es el entorno grafico de Java.