Concepto
Una excepcion es una situcion anomala la cual se produce cuando se esta ejecutando un programa,ejemplo cuando se le ingresa un valor String a un int,siempre y cuando sea ingresado mediante la ejecucion del programa.
Tambien otro claro ejemplo es cuando se piden la coordenadas de un determinado array(arreglo) en el cual la coordenadas ingresadas estan fuera del rango, mejor conocido como longitud length.
Mediante la captura de excepciones Java nos proporciona un mecanismo que permite al programa sobreponerse a estas situaciones, en el cual el programador puede decidir el comportamiento del programa cuando ocurren estas exepciones.
Excepciones y Errores
Pero no confundir una situacion de Excepcion con un Error de sistema,
al sugir un determinados problema en la ejecucion de un programa la consola nos de un aviso del error mediante
la consola pudiendo ser capturada mediante la subclase Exception (Clase preterminada de Java) formando un objeto de esta subclase.
Ejemplo
Al ingresar un valor un valor no int ,nos surgira el siguiente error mediante el volcado de pila( esto es cuando surge un error obligando a la consola a finalizar el programa y nos permite detectar la falla),
En cambio un error es un anomalia del sistema que puede surgir a causa de un error en la maquina virtual o por falta de memoria de sistema, el cual es irreversible y no se recuperara del error.
Clases de Excepcion
Antes de explicarles como capturar las exepciones para impedir que se finalice el programa les explicare sobre las clases Exception,
Al producirse un programa como ya explique antes se crea un objeto de la Subclase Exception a la que pertenece la Excepcion ocurrida, el cual este objeto puede ser utilizado para el tratamiento de la Excepcion.
Lo que esta señalado con azul es la ruta de las subclase y lo que esta señalada con verde es la subclase de la excepcion,por consiguiente esa subclase es la de la exepcion de la anomalia ocurrda en el programa.
Nota:la ruta hace referencia a que se importa, pues esta es una excepcion propia del Scanner.
Tipos de excepciones
Fuente de la Imagen www.javamex.com (aportada por @fededonna)
-Excepciones Marcadas( "checked" )
-Excepciones no marcadas( "unchecked" )
Excepciones Marcadas
Estas fallas son generadas mediante el manejo de la ejecucion del programa, las cual su captura es obligatoria para el buen funcionamiento del programa..
Para ser mas claro una Excepcion marcada es todas las demas clases de Excepciones menos las que pertenecen a RuntimeExcepcion(errores surgidos en variables internas de la clases del proyecto donde se esta trabajando y durante la ejecucion).
Un ejemplo de una excepcion marcada, es cuando al declarar un metodo de la clase File esta nos lanzara una Excepcion en la escritura del programa,a esto se le puede dar solucion mediante el try y catch, capturando la IOException, la captura de excepciones lo veremos mas adelante .
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash4/292551_3594812080446_1577765542_2799309_1864456749_n.jpg
Entonces para compilar el programa seria necesario capturar esta excepcion, como se ve en la imagen de abajo se a evitado el error de compilacion.
Excepciones no Marcadas
Estas pertenecen a las excepciones de tiempo de ejecucion ,como dije antes las RuntimeException y todas las subclases pertenecientes a esta. Estas exepciones regularmente surgen por mala programacion como en el ejemplo siguiente.
como aqui se puede ver,el net beans no marca ningun error de compilacion, pero al ejecutar el programa se producira una RuntimeException la cual provoca el volcado de fila,en este programa podemos ver que se declaro un array pero no se a instanciado su longitud , ni se han inicializado sus posiciones ocasionado que al ser usada una posicion del array nos volque la siguiente excepcion.
Captura de excepciones ¡yeah!
Como dije anteriormente al producirse una Excepcion se crea un objeto de la clase Excepcion correspondiente,
la cual se lanza( throw ) a la linea de codigo donde esta tuvo lugar, ahora con el mecanismo de captura se puede atrapar (catch) el objeto de excepcion para que se realice una operacion determinada o simplemente continue el flujo del programa.
Mediante el try y catch
Aqui esta un ejemplo de la captura de la excepcion:
1.- Aqui mediante la funcion try se delimita aquellas instrucciones donde se puede producir una excepcion, si no se produce esta seguira con su compartamiento normal, sin tomar en cuenta el catch.
2.-Aqui en el catch declara que al producirse una excepcion, el objeto correspondiente pasara por las diferentes lineas de catch( suponiendo que tubiera mas de una) hasta que encuentre la Excepcion donde pertenece el objeto, y en ese momento se debe guardar el objeto en un recolector de excepciones "aux".
3.-En esta linea se ejecuta el comportamiento correspondiente al catch
4.-Aqui se puede ver como sigue el flujo del programa a pesar de la excepcion, y se ejecuta su comportamiento definido en el catch.
Aqui esta ala segunda parte