2012-06-24 14 views

Odpowiedz

4

Dlaczego?

Po prostu dlatego, że DataAccessException jest abstract class. Nie można utworzyć instancji klasy abstrakcyjnej.

Co mogę zrobić?

Jeśli zaznaczysz hierarchię:

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

Od NestedRuntimeException jest również abstrakcyjne, można rzucić new RuntimeException(msg); (co nie jest zalecane). Możesz przejść do tego, co sugeruje inna odpowiedź - Użyj jednej z konkretnych klas.

19

DataAccessException jest klasą abstrakcyjną i nie można jej utworzyć. Zamiast używać jednego z konkretnych klas, takich jak nowy DataRetreivalFailureException („to był powód”) lub tworzyć własne:

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

I masz anonimową klasę pochodną od DataAccessException.

+2

+1 aktualne rozwiązanie. –

+0

Próbowałem rzucić 'NonTransientDataAccessException', który rozszerza' DataAccessException', ale jest również ** abstrakcyjny **. Mogę teraz rzucić 'DataRetrievalFailureException', który rozszerza' NonTransientDataAccessException' i nie jest ** abstrakcyjny **. Dzięki, twoja odpowiedź naprawdę mi pomogła. – Doug

Powiązane problemy