2012-06-24 15 views

Respuesta

4

¿Por qué?

Simplemente porque DataAccessException es abstract class. No puedes instanciar una clase abstracta.

¿Qué puedo hacer?

Si marca la jerarquía:

extended by java.lang.RuntimeException 
       extended by org.springframework.core.NestedRuntimeException 
        extended by org.springframework.dao.DataAccessException 

Desde NestedRuntimeException también es abstracto, se puede tirar un new RuntimeException(msg); (no recomendado). Puede elegir lo que sugiere la otra respuesta: use una de las clases concretas.

19

DataAccessException es una clase abstracta y no se puede crear una instancia. En lugar de utilizar una de las clases concretas tales como nueva DataRetreivalFailureException ("esta fue la razón") o crear su propia:

throw new DataAccessException("this was the reason") {}; 

Y se obtiene una clase anónima derivado de la DataAccessException.

+2

+1 la solución real. –

+0

Estaba intentando lanzar 'NonTransientDataAccessException', que extiende' DataAccessException' pero también ** abstract **. Ahora puedo lanzar 'DataRetrievalFailureException', que extiende' NonTransientDataAccessException' y no es ** abstracto **. Gracias, tu respuesta realmente me ayudó. – Doug

Cuestiones relacionadas