2012-02-21 21 views
17

जावा में अपना स्वयं का अनचेक अपवाद बनाना संभव है?जावा में अपना स्वयं का अनचेक अपवाद बनाना संभव है?

असल में, मैं चाहते हैं, उसके

  • अपने ही अपवाद वर्ग, है MyUncheckedException
  • जो मुझे सभी तरीकों कि विधि है कि खुद throws
  • की बाढ़ के साथ इस अपवाद फेंकता फोन को अद्यतन नहीं कर सकता
+0

बस सावधान रहें कि मौजूदा कोड में नए अपवाद जोड़ना मूल रूप से आपके एपीआई के पूर्व संस्करणों के साथ संगतता को तोड़ देता है। निश्चित रूप से, अगर आप केवल रनटाइम अपवाद जोड़ते हैं तो यह अभी भी द्विआधारी संगत है, लेकिन व्यक्तिगत रूप से मैं इसे और भी बदतर मानता हूं: अनजान लोग अब नए संस्करण से लिंक होंगे और अचानक अजीब त्रुटियां प्राप्त करेंगे .. उह। – Voo

उत्तर

29

हां। RuntimeException से MyUncheckedException बढ़ाएं। हालांकि, नीचे दिशानिर्देश से documentation

सामान्यतया, एक RuntimeException फेंक या RuntimeException के उपवर्ग का निर्माण नहीं करतीं क्योंकि आप अपवाद अपने तरीके फेंक कर सकते हैं निर्दिष्ट करने से परेशान होना नहीं करना चाहती है ।

यहां नीचे पंक्ति दिशानिर्देश है: यदि कोई ग्राहक अपवाद से पुनर्प्राप्त होने की अपेक्षा कर सकता है, तो इसे एक अपवाद अपवाद बनाएं। यदि कोई ग्राहक अपवाद से पुनर्प्राप्त करने के लिए कुछ भी नहीं कर सकता है, तो इसे अनचेक अपवाद बनाएं।

2

मुझे लगता है कि आप बस रनटाइम अपवाद को उपclass करना चाहते हैं?

4

हाँ - यह से RuntimeException

निकाले जाते हैं सुनिश्चित करें कि आप सही कारण के लिए यह करना बनाओ: एक नियम के रूप में, क्रम अपवाद से संकेत मिलता है प्रोग्रामिंग त्रुटियों, बल्कि त्रुटियों से है कि एक प्रोग्राम संभवतः कुछ सार्थक में करने के लिए प्रतिक्रिया कर सकता है मार्ग।

0

हाँ। प्रभावी जावा के अनुसार -

जबकि जावा भाषा विशिष्टता यह आवश्यकता नहीं है, इस बात की प्रबल परंपरा है कि त्रुटियों JVM द्वारा उपयोग के लिए आरक्षित हैं संसाधन की कमी, अपरिवर्तनीय विफलताओं, या अन्य स्थितियों है कि यह कर इंगित करने के लिए है निष्पादन जारी रखना असंभव है। इस सम्मेलन की लगभग सार्वभौमिक स्वीकृति को देखते हुए, किसी भी नए त्रुटि उपखंड को लागू नहीं करना सबसे अच्छा है। इसलिए, आपके द्वारा लागू किए गए सभी अनचेक फेंकने वाले को RuntimeException (सीधे या परोक्ष रूप से) subclass करना चाहिए।

अनियंत्रित अपवाद के उपयोग के नीचे की सिफारिश की है: -

  1. उपयोग क्रम अपवाद प्रोग्रामिंग त्रुटियों से संकेत मिलता है।
  2. यदि आपको लगता है कि किसी शर्त को पुनर्प्राप्ति की अनुमति देने की संभावना है, तो चेक अपवाद का उपयोग करें; यदि नहीं, तो रनटाइम अपवाद का उपयोग करें। यदि यह स्पष्ट नहीं है कि रिकवरी संभव है या नहीं, तो संभवतः आप एक अनचेक अपवाद का उपयोग कर बेहतर हो सकते हैं।

अनियंत्रित अपवाद का दस्तावेजीकरण के बारे में -

प्रत्येक अनियंत्रित अपवाद है कि एक विधि फेंक कर सकते हैं दस्तावेज़ के लिए जावाडोक @throws टैग का प्रयोग करें, लेकिन का उपयोग नहीं करते कीवर्ड विधि में अनियंत्रित अपवाद शामिल करने के लिए फेंकता घोषणा।

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