Professional Documents
Culture Documents
ALUMNO:
ANAYA JIMENEZ MARCIAL
DOCENTE:
HUARAZ-PERÚ
2017
PAQUETES Y EXCEPCIONES
Una excepción se produce cuando una condición excepcional interrumpe o altera el curso normal
de un programa. Por ejemplo, un método que debe abrir un archivo se encuentra con que tal
archivo no existe, o se intenta realizar una división siendo el divisor cero.
El manejo de excepciones consiste en escribir el código necesario para capturar una excepción y
resolverla o al menos informar al usuario de lo que ocurre y que no se asuste. No es lo mismo ver
una ventanita que nos informa amablemente de que no se encuentra el archivo o que inserte un
disco a que la aplicación se quede muerta o ver un galimatías de números y letras (recordemos
que el usuario final no suele ser un programador).
Como en Java todo se reduce a objetos, cuando ocurre una excepción el método que la provoca
crea un objeto con información sobre el error y el sistema busca algo en el programa para
manejarlo. Estos objetos, por supuesto, tienen que pertenecer a una clase. En Java, las excepciones
derivan todas de la superclase Throwable, que está en el paquete java.lang. Throwable significa
"arrojable" o "lanzable" en inglés, porque en Java las excepciones se "lanzan" o "arrojan" y hay
que "pillarlas" o manejarlas con un gestor de excepciones (exception handler). De Throwable
derivan las clases Error y Exception, y de esta última deriva la clase RuntimeException, cuyos
objetos son errores que se producen en tiempo de ejecución.
Esto se hace de la siguiente manera: un método que pueda lanzar una excepción, bien lo hayas
escrito tú, bien esté en el API, debe declararlo así
public void miMétodoArriesgado() throws NombreDeLaExcepción;
Después, al utilizar ese método en el programa, hay que hacerlo dentro de un bloque try-catch
(prueba y captura), que básicamente viene a decir: prueba a usar este método, y si produce una
excepción, captúrala y haz lo que debas con ella.
try{
public void miMétodoArriesgado(); //método que puede producir una excepción
}catch (NombreDeLaExcepción e){
//código que indica qué hacer si se produce
}
TIPOS DE EXCEPCIONES
El lenguaje Java diferencia claramente entre tres tipos de excepciones: errores, comprobadas (en
adelante checked) y no comprobadas (en adelante un checked). El gráfico que se muestra a
continuación muestra el árbol de herencia de las excepciones en Java (se omite el paquete de todas
las que aparecen, que es java. Lang):
✓ Throwable
✓ Error
✓ Exception
✓ RuntimeException
La clase principal de la cual heredan todas las excepciones Java es Throwable. De ella nacen dos
ramas: Error y Exception. La primera representa errores de una magnitud tal que una aplicación
nunca debería intentar realizar nada con ellos (como errores de la JVM, desbordamientos de
buffer, etc.) y que por tanto no tienen cabida en este artículo. La segunda rama, encabezada por
Exception, representa aquellos errores que normalmente si solemos gestionar, y a los que
comúnmente solemos llamar excepciones.
De Exception nacen múltiples ramas: Class NotFound Exception, IOException, Parse Exception,
SQLException y otras muchas, todas ellas de tipo checked. La única excepción (valga la
redundancia) es RuntimeException que es de tipo unchecked y encabeza todas las de este tipo.
A pesar de que la diferencia entre las excepciones de tipo checked y unchecked es muy
importante, es también a menudo uno de los aspectos menos entendidos dentro del tratamiento de
excepciones. Veamos cada una de ellas con un poco más de detalle.
EXCEPCIONES CHECKED
Una excepción de tipo checked representa un error del cual técnicamente podemos recuperarnos.
Por ejemplo, una operación de lectura/escritura en disco puede fallar porque el fichero no exista,
porque este se encuentre bloqueado por otra aplicación, etc. Todas estas situaciones, además de
ser inherentes al propósito del código que las lanza (lectura/escritura en disco) son totalmente
ajenas al propio código, y deben ser (y de hecho son) declaradas y manejadas mediante
excepciones de tipo checked y sus mecanismos de control.
En ciertos momentos, a pesar de la promesa de recuperabilidad, nuestro código no estará
preparado para gestionar la situación de error, o simplemente no será su responsabilidad. En estos
casos lo más razonable es relanzar la excepción y confiar en que un método superior en la cadena
de llamadas sepa gestionarla.
Por tanto, todas las excepciones de tipo checked deben ser capturadas o relanzadas. En el primer
caso, utilizamos el más que conocido bloque try-catch:
import java.io.FileWriter;
import java.io. IOException;
2. Marco D. Tratamiento de excepciones en Java. Publicado 16 de Julio de 2012 citado 17/ 12/
11. Disponible en: http://www.davidmarco.es/articulo/tratamiento-de-excepciones-en-java.