Usamos JUnit 3 en el trabajo y no hay ninguna anotación ExpectedException
. Quería añadir una utilidad en nuestro código para terminar con esto:¿Captura una excepción genérica en Java?
try {
someCode();
fail("some error message");
} catch (SomeSpecificExceptionType ex) {
}
así que he intentado esto:
public static class ExpectedExceptionUtility {
public static <T extends Exception> void checkForExpectedException(String message, ExpectedExceptionBlock<T> block) {
try {
block.exceptionThrowingCode();
fail(message);
} catch (T ex) {
}
}
}
Sin embargo, Java no puede utilizar tipos de excepciones genéricas en un bloque catch, creo.
¿Cómo puedo hacer algo como esto, trabajando en torno a la limitación de Java?
¿Hay alguna manera de comprobar que la variable ex
es del tipo T
?
Parece que tiene razón y * no * puede detectar genéricos. Lame http://stackoverflow.com/questions/2444633/why-doesnt-java-support-generic-throwables – rogerdpack
Dangit, Java.Este es simplemente otro de los muchos obstáculos que se interponen en nuestro camino al tratar de hacer que el código sea lo más limpio posible utilizando las lambdas de Java 8. –