2012-06-24 9 views
6

मैं DataAccessException की हैंडलिंग के लिए JUnit परीक्षण बनाने की जरूरत,org.springframework.dao.DataAccessException का उदाहरण कैसे बनाएं?

लेकिन जब मैं कोशिश:

  throw new DataAccessException(); 

प्राप्त करें:

Cannot instantiate the type DataAccessException 

क्यों? मैं क्या कर सकता हूँ? धन्यवाद।

उत्तर

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' को बढ़ाता है लेकिन यह ** सार ** भी है। अब मैं 'DataRetrievalFailureException' फेंक सकता हूं, जो' NonTransientDataAccessException' को बढ़ाता है और ** सार ** नहीं है। धन्यवाद, आपके जवाब ने वास्तव में मेरी मदद की। – Doug

संबंधित मुद्दे