私は、DataAccessExceptionの取扱いのためのJUnitテストを作成する必要がorg.springframework.dao.DataAccessExceptionのインスタンスを作成するには?
私がしようとすると:
throw new DataAccessException();
は受信:
Cannot instantiate the type DataAccessException
なぜ?私に何ができる?おかげさまで
私は、DataAccessExceptionの取扱いのためのJUnitテストを作成する必要がorg.springframework.dao.DataAccessExceptionのインスタンスを作成するには?
私がしようとすると:
throw new DataAccessException();
は受信:
Cannot instantiate the type DataAccessException
なぜ?私に何ができる?おかげさまで
なぜですか?
DataAccessException
がabstract classであるためです。抽象クラスをインスタンス化することはできません。
どうすればよいですか?
、階層をチェックした場合:NestedRuntimeException
も抽象的であるので
extended by java.lang.RuntimeException
extended by org.springframework.core.NestedRuntimeException
extended by org.springframework.dao.DataAccessException
を、あなたは(推奨されません)new RuntimeException(msg);
を投げることができます。あなたは、他の答えが示唆していることに行くことができます - 具体的なクラスの1つを使用してください。
DataAccessExceptionは、抽象クラスであり、インスタンス化できません。代わりに、このような新しいDataRetreivalFailureExceptionとして具象クラスの1(「これが理由だった」)を使用するか、または独自に作成します。
throw new DataAccessException("this was the reason") {};
そして、あなたはDataAccessExceptionから派生匿名クラスを取得します。
+1実際の解決策。 –
私は 'DataAccessException'を拡張する' NonTransientDataAccessException'を投げようとしていましたが、** abstract **です。私は 'NonTransientDataAccessException'を拡張し、** abstract **ではない' DataRetrievalFailureException'を投げることができます。ありがとう、あなたの答えは本当に私を助けた。 – Doug