क्या NotImplementedException
जावा में .NET की तरह कुछ है ?
क्या NotImplementedException
जावा में .NET की तरह कुछ है ?
जवाबों:
कॉमन्स लैंग के पास है। या आप एक फेंक सकते हैं UnsupportedOperationException
।
मुझे लगता है कि वही java.lang.UnsupportedOperationException
है जो आप ढूंढ रहे हैं।
new UnsupportedOperationException("Not implemented yet")
- खुश?
आप इसे स्वयं कर सकते हैं (यानी मैंने क्या किया है) - अपवाद से निपटने के लिए परेशान नहीं होने के लिए, आप बस रनटाइम एक्सेप्शन का विस्तार करते हैं, आपकी कक्षा कुछ इस तरह दिख सकती है:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
आप एक संदेश लेने के लिए इसे बढ़ा सकते हैं - लेकिन यदि आप विधि का उपयोग करते हैं जैसा कि मैं करता हूं (अर्थात, एक अनुस्मारक के रूप में, कि अभी भी कुछ लागू होना है), तो आमतौर पर अतिरिक्त संदेशों की कोई आवश्यकता नहीं है।
मैं यह कहने की हिम्मत करता हूं, कि मैं केवल इस पद्धति का उपयोग करता हूं, जबकि मैं एक प्रणाली विकसित करने की प्रक्रिया में हूं, इससे मेरे लिए यह आसान हो जाता है कि मैं उन तरीकों पर नजर न रखूं, जो अभी भी ठीक से लागू नहीं हुई हैं :)
UnsupportedOperationException
मेरी राय में उपयोग से बेहतर है । अब, केवल जावा अपवादों के सामान्य पुस्तकालय में इसे जोड़ देगा!
जैसा कि उल्लेख किया गया है, जेडीके के पास एक करीबी मैच नहीं है। हालांकि, मेरी टीम को कभी-कभी इस तरह के अपवाद के लिए भी उपयोग किया जाता है। हम UnsupportedOperationException
अन्य उत्तरों के अनुसार सुझाव दे सकते हैं, लेकिन हम अपने बेस लाइब्रेरी में कस्टम अपवाद वर्ग को पसंद करते हैं, जिसमें बिल्डरों को हटा दिया गया है:
public class NotYetImplementedException extends RuntimeException
{
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException()
{
}
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException(String message)
{
super(message);
}
}
इस दृष्टिकोण के निम्नलिखित लाभ हैं:
NotYetImplementedException
, वे जानते हैं कि एक कार्यान्वयन की योजना बनाई गई थी और या तो भूल गई थी या अभी भी प्रगति पर है, जबकि UnsupportedOperationException
कहते हैं ( संग्रह अनुबंधों के अनुरूप ) कि कुछ कभी भी लागू नहीं होगा। इसलिए हमारे पास वर्ग नाम में "अभी तक" शब्द है। इसके अलावा, एक आईडीई आसानी से कॉल साइटों को सूचीबद्ध कर सकता है।import
लाइन पर (JDK 9 ने इसे ठीक किया , हालांकि)।नहीं, वहाँ नहीं है और यह शायद वहाँ नहीं है, क्योंकि इसके लिए बहुत कम वैध उपयोग हैं। मैं इसे इस्तेमाल करने से पहले दो बार सोचूंगा। इसके अलावा, वास्तव में खुद को बनाना आसान है।
कृपया इस चर्चा का संदर्भ लें कि यह .NET में भी क्यों है।
मुझे लगता UnsupportedOperationException
है कि करीब आता है, हालांकि यह नहीं कहता है कि ऑपरेशन अभी लागू नहीं हुआ है, लेकिन असमर्थित भी। इसका मतलब यह है कि कोई भी वैध कार्यान्वयन संभव नहीं है। ऑपरेशन असमर्थित क्यों होगा? क्या यह भी होना चाहिए? इंटरफ़ेस अलगाव या Liskov प्रतिस्थापन मुद्दों हो सकता है?
यदि यह प्रगति का काम है तो मैं इसके लिए तैयार हो जाऊंगा ToBeImplementedException
, लेकिन मैंने कभी खुद को एक ठोस विधि को परिभाषित करते हुए नहीं पकड़ा है और फिर इसे इतने लंबे समय के लिए छोड़ देता हूं कि यह उत्पादन में बदल जाता है और इस तरह के अपवाद की आवश्यकता होगी।