Está en la página 1de 10

Un error se puede producir en:

 tiempo de compilación (sintaxis)


 tiempo de ejecución

1
Throwable es la superclase de todos los errores y excepciones en el lenguaje Java,
la cual hereda directamente de la clase Object.

La clase Throwable tiene dos subclases:

 Error
 Exception

La clase Error hace referencia a problemas de tipo hardware (poco espacio en el


disco duro, problemas en la memoria RAM…).

La clase Exception hace referencia

Los errores de tipo IOException se denominan errores o excepciones


comprobadas.

Estas excepciones no se generan por culpa del programador, es decir, no dependen


directamente del programador, pero si podemos solucionarlas, a diferencia con lo
que pasa en la clase Error.

Por ejemplo, al intentar leer un archivo o una imagen no están en la carpeta


indicada.

En ese tipo de excepciones Java obliga a capturarlas y tratarlas.

2
Los errores de tipo RuntimeException se denominan errores o excepciones no
comprobadas.

Generalmente, son errores debido al programador.

Por ejemplo, al recorrer un array de 10 posiciones y queremos acceder a una


posición que no existe.

Intentar almacenar en una variable de tipo String un entero.

Dividir un número entre cero.

3
Lanzamiento de excepciones

Excepciones no comprobadas

 Vamos a leer números desde el teclado.

¿Qué pasaría si introducimos un valor no entero como un String?

Se genera una excepción perteneciente a la clase InputMismatchException.

Observamos en la jerarquía de clases, esta clase hereda de la clase


RuntimeException, por lo que estamos ante una excepción no comprobada.

En este tipo de excepciones no estamos obligados a capturar la misma, pero no


quiere decir que no la podemos capturar. Esto se considera una mala práctica de
programación, porque se puede mejorar el código para que no ocurra este error.

4
 Capturamos la excepción no comprobada.

Podemos mejorar este código utilizando las clases:

 InputStreamReader
 BufferedReader

El método readLine() de la clase BufferedReader nos obliga a capturar las


excepciones.

5
Observamos en la jerarquía de clases, la clase NumberFormatException hereda de la
clase RuntimeException, por lo que estamos ante una excepción no comprobada.

Observamos en la jerarquía de clases, la clase IOException hereda de la clase


Exception, por lo que estamos ante una excepción comprobada.

6
throws

La palabra reservada o cláusula throws permite propagar una excepción.

Si un método es capaz de provocar una excepción que no maneja él mismo,


debería especificar este comportamiento, para que todos los métodos que lo llamen
puedan colocar protecciones frente a esa excepción.

throws se utiliza para identificar la lista posible de excepciones que un método


puede lanzar.

Para la mayoría de las subclases que heredan de la clase Exception, el compilador


Java obliga a declarar qué tipos podrá lanzar un método.

Si el tipo de excepción es de la clase Error o RuntimeException, o cualquiera de sus


subclases, no se aplica esta regla, dado que no se espera que se produzcan como
resultado del funcionamiento normal del programa.

Si un método lanza explícitamente una instancia de Exception o de sus subclases, a


excepción de la excepción de RuntimeException, se debe declarar su tipo con la
sentencia throws.

7
Si introducimos un valor no numérico, se propagará la excepción hasta la parte del
código que llamó al método y capturará la misma.

8
throw

La palabra reservada o cláusula throw hace referencia a la posibilidad de lanzar


excepciones de forma manual.

9
Creación de excepciones propias

Creamos una clase que herede de la clase Exception.

 Creamos dos constructores:

o Un constructor sin parámetros


o Un constructor con un parámetro

Si queremos lanzar una excepción propia:

throw new FileFormatException("Mensaje de error");

10