Let कहते हैं कि मैं इस इंटरफेस एक कि कई विक्रेताओं द्वारा कार्यान्वित किया जाता है है:जावा: एक इंटरफ़ेस विधि घोषित करने का उचित तरीका क्या है जो अपवाद फेंक सकता है?
interface A
{
void x();
void y();
}
हालांकि, मैं विक्रेताओं कुछ संकेत देने के लिए अपवाद फेंक करने में सक्षम में नाकाम रही है होना चाहता हूँ और संभावित विधि एक RuntimeException
फेंक सकता है। प्रत्येक मामले में, इन विधियों को कॉल करने वाले कोड को विफलता को संभालना चाहिए और जारी रखना चाहिए। सिर्फ इसलिए कि 1 विक्रेता एनपीई फेंकता है, मैं नहीं चाहता कि सिस्टम क्रैश हो जाए। (या वास्तव में लाइन के रखरखाव के नीचे) व्यक्ति विधि बुला के लिए इसे छोड़ने के बजाय, मुझे यकीन है कि प्रत्येक कॉल के रूप में प्रत्येक विधि की घोषणा के द्वारा सभी अपवादों को पकड़ेगा बनाने के लिए करना चाहते हैं:
void x() throws Exception;
लेकिन आम तौर पर खराब है अभ्यास (पीएमडी इसे पसंद नहीं करता है और आम तौर पर मैं ठोस तरीकों के लिए नियम से सहमत हूं) तो मुझे आश्चर्य है कि यह नियम के लिए अपवाद है या क्या कोई बेहतर तरीका है?
मुझे स्पष्ट होने दें, मैं ऐसे समाधान की तलाश में हूं जहां इंटरफ़ेस के कॉलर को सभी अपवादों को संभालने के लिए मजबूर किया गया है (RuntimeException
एस सहित)।
विस्तार मेरी पर्यावरण आगे करने के लिए, यह सब एक OSGi ढांचे के भीतर चल रहा है। इसलिए प्रत्येक विक्रेता अपने कोड को बंडल में पैकेज करता है और ओएसजीआई पूरे सिस्टम को क्रैश होने से रोकने के लिए सभी अपवादों को संभाल लेगा। जो मैं वास्तव में देख रहा हूं वह ओएसजीआई सेवा इंटरफेस है जिसे कुछ कोर बंडल द्वारा बुलाया जाएगा। मैं यह सुनिश्चित करना चाहता हूं कि जब मैं सभी सेवाओं के माध्यम से पुन: प्रयास करता हूं, तो एक सेवा एनपीई नहीं फेंकती है और निष्पादित प्रक्रिया को रोकती है। मैं सेवा से फेंकने वाले सभी अपवादों को पकड़कर इसे अधिक सुन्दर तरीके से संभालना चाहता हूं ताकि अन्य प्रदान की गई सेवाएं अभी भी प्रबंधित हों।
यह प्रश्न इंटरफेस के लिए विशिष्ट नहीं है, है ना? मेरा मतलब है, वही मुद्दे अमूर्त तरीकों और यहां तक कि विधि कार्यान्वयन पर भी लागू होते हैं जो हो सकता है (या यहां तक कि होने की उम्मीद भी हो सकती है)। –
यदि यह विधि 'कुछ' कर रही है तो यह इतना व्यापक है कि यह संभवतः कोई अपवाद फेंक सकता है? – blank
अपवादों के सेट को बाधित करना मुश्किल होगा, इसलिए हां। –