Hay dos tipos de excepciones en Java: marcada y sin marcar excepciones.
Para las excepciones comprobadas, el compilador comprueba si su programa las maneja, ya sea captándolas o especificando (con una cláusula throws
) que el método en el que podría ocurrir la excepción, que el método arrojaría ese tipo de excepción.
Las clases de excepción que son subclases de java.lang.RuntimeException
(y RuntimeException
en sí) son excepciones no marcadas. Para esas excepciones, el compilador no realiza el control, por lo que no es necesario que los capture o especifique que puede arrojarlos.
La clase InterruptedException
es una excepción marcada, por lo que debe atraparla o declarar que su método podría arrojarla. Usted está lanzando la excepción del bloque catch
, por lo que debe especificar que el método podría tirarlo:
public void invalid() throws InterruptedException {
// ...
clases de excepción que se extienden java.lang.Exception
(excepto RuntimeException
y subclases) son excepciones comprobadas.
Consulte Sun's Java Tutorial about exceptions para obtener información detallada.
¿Qué tipo de error obtienes? – Simon
Dice: excepción no reportada java.lang.InterruptedException; debe ser atrapado o declarado arrojado – fireshadow52