2012-06-24 48 views

回答

4

为什么?

只是因为DataAccessExceptionabstract class。你不能实例化一个抽象类。

我能做些什么?

如果您检查层次:

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

由于NestedRuntimeException也是抽象的,你可以抛出一个new RuntimeException(msg);(不推荐)。你可以选择其他答案的建议 - 使用其中一个具体的类。

19

DataAccessException是一个抽象类,不能实例化。改用混凝土类之一,如新DataRetreivalFailureException(“这是原因”)或创建自己:

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

而且你从DataAccessException的派生的匿名类。

+2

+1实际的解决方案。 –

+0

我试图抛出'NonTransientDataAccessException',它扩展了'DataAccessException',但也是** abstract **。我现在可以抛出'DataRetrievalFailureException',它扩展了'NonTransientDataAccessException'而不是** abstract **。谢谢,你的回答真的帮了我。 – Doug