Introducción¶
Tanto en el proceso de la creación de un programa en cualquier lenguaje como posteriormente al hacerlo funcionar se pueden cometer diversos errores que es conveniente detectar y clasificar para manejarlos y que los programas no se queden “colgados” y sigan su funcionamiento a pesar de haber ocurrido un error.
El lenguaje Java incorpora soporte para manejar situaciones anómalas, conocidas como “excepciones”, para atender a los errores que pueden ocurrir durante la ejecución de un programa. Con el sistema de manipulación de excepciones de Java, un programa puede comunicar eventos inesperados a un contexto de ejecución más capacitado para responder a tales eventos anormales. Estas excepciones son manejadas por código fuera del flujo normal de control del programa.
¿Cuándo y cómo se provoca una excepción?¶
Una excepción se puede provocar al acontecer, por ejemplo, alguna de las siguientes situaciones:
- No hay memoria disponible para asignar.
- Acceso a un elemento de un array fuera de rango.
- Leer por teclado un dato de un tipo distinto al esperado.
- Error al abrir un fichero que no se encuentra.
- División por cero.
- Problemas de Hardware.
Si la excepción no se trata, el manejador de excepciones realiza lo siguiente:
- Muestra la descripción de la excepción.
- Muestra la traza de la pila de llamadas.
- Provoca el final del programa.
Pila de llamadas¶
package exceppiladellamadas;
import java.util.Scanner;
public class ExcepPiladellamadas {
static void incluirNumerador(){
Scanner sc = new Scanner(System.in);
System.out.print("Indica el numerador: ");
int num = sc.nextInt();
incluirDenominador(num);
}
static void incluirDenominador(int n){
Scanner sc = new Scanner(System.in);
System.out.print("Indica el denominador: ");
int den = sc.nextInt(); realizarDivisión(n, den);
}
static void realizarDivisión(int n, int d){
System.out.println("La división es: " + n/d);
}
public static void main(String[] args) {
incluirNumerador();
}
}

Salida

Ejemplos de código Java que provocan una excepción:

El manejo de excepciones proporciona una separación entre el código básico y el código que maneja los errores, haciéndolo más legible. Utilizando excepciones se consigue:
- Separar las instrucciones del programa de las del tratamiento de errores.
- Evitar llenar el código del programa de instrucciones de comprobación (
if
,switch
, etc). - El código es más simple de escribir ya que no se fuerza al programador a comprobar los errores constantemente.
¿Qué ocurre cuando se produce una excepción?¶
Cuando ocurre una excepción:
- La Máquina Virtual Java crea un objeto excepción y lo lanza. El objeto excepción creado contiene información sobre el error. La ejecución normal del programa se detiene.
- El sistema busca en el método donde se ha producido la excepción un manejador de excepciones que capture(catch) ese objeto y trate la excepción.
- Si el método no contiene un manejador para la excepción se busca en el método que llamó a este y así sucesivamente en toda la pila de llamadas.

- Cuando se encuentra un manejador apropiado se le pasa la excepción. Un manejador de excepciones es considerado apropiado si el tipo de objeto excepción lanzado es compatible al tipo que puede manejar.
- Si no se encuentra un manejador adecuado la Máquina Virtual Java muestra el error y acaba el programa.