मैं एक एपीआई के साथ काम कर रहा हूं जो सत्य होने पर सही होने का दावा करता है, और अगर यह विफल रहता है तो झूठा। लेकिन, यह विफल होने पर अलग-अलग अपवादों को फेंकने का भी दावा करता है। यह झूठी वापसी कैसे कर सकता है और अपवाद फेंक सकता है?एक मूल्य लौटें और एक अपवाद फेंक दें?
उत्तर
दोनों अपवाद फेंकना और एक फ़ंक्शन कॉल से मूल्य वापस करना संभव नहीं है।
शायद यह कोई त्रुटि होने पर false
लौटने जैसा कुछ करता है, लेकिन इनपुट अमान्य होने पर अपवाद फेंकना है।
संपादित करें: PaulPRO एक (अब हटाए) जवाब ओर इशारा करते हुए यह तकनीकी रूप से संभव पैदा करने के लिए एक अपवाद है, एक अलग धागे में फेंक दिया है, जबकि वर्तमान में एक मूल्य लौटने है कि पोस्ट। मैंने सोचा कि यह ध्यान देने योग्य था, भले ही यह ऐसा कुछ न हो जिसे आपको कभी देखना चाहिए।
आप एक अपवाद है कि एक (इस मामले बूलियन में) है मूल्य फेंक कर सकते हैं:
public class ValueException extends Exception {
final boolean value;
public ValueException(boolean value, String message) {
super(message);
this.value = value;
}
public boolean getValue() {
return value;
}
}
हालांकि यह संभव है इस तरह से कि एक अपवाद और एक मूल्य प्राप्त किया जा सकता में अपने कोड लिखने के लिए फ़ंक्शन कॉल से (उपर्युक्त पोस्ट देखें), इसे उचित कोडिंग में कभी नहीं किया जाना चाहिए।
मुझे इस एपीआई पर प्रलेखन के लिए एक लिंक देखना अच्छा लगेगा। एपीआई को स्पष्टता पर प्राथमिकता दी जानी चाहिए। अपवाद फेंकना और मूल्य लौटने से सवाल उठता है कि वापस लौटाया गया मूल्य उपयोग करने के लिए सुरक्षित है या यदि यह अमान्य है।
याद रखें, ब्लॉक को आज़माएं/पकड़ें अपवादों को संभालने की दूसरी विधि हैं। वे कॉलिंग विधि के अपवाद को पास नहीं करते हैं, लेकिन इसे आंतरिक रूप से इस तरह से संभालते हैं कि डेवलपर उपयुक्त मानता है।
यदि, डीबगिंग उद्देश्यों के लिए, आपको अपवाद के मामले में परिणामस्वरूप मूल्य देखना होगा, तो बोहेमियन का विचार अच्छी तरह से काम करता है।
- 1. बूल वापस करने के लिए, एक अपवाद फेंक दें और
- 2. हमेशा पैरामीटर जांचें और अपवाद फेंक दें
- 3. एक InvocationTargetException लक्ष्य अपवाद को दोबारा फेंक दें
- 4. एक अपवाद फेंक या वापसी अशक्त
- 5. एक फंक्शन से अपवाद और वापसी परिणाम
- 6. मैन्युअल रूप से एक अपवाद फेंक
- 7. डेटटाइम.अब एक अपवाद फेंक रहा है
- 8. 'System.Windows.Markup.StaticResourceHolder' पर मूल्य एक अपवाद
- 9. जब एक अपवाद फेंक दिया है
- 10. फेंक अपवाद
- 11. एक अपवाद एक जनरेटर में फेंक दिया और एक समारोह की खपत है कि यह
- 12. रिटर्न त्रुटि और अपवाद फेंक
- 13. निष्पादन को रोकने के बिना अपवाद फेंक दें?
- 14. पकड़ ब्लॉक के बजाए प्रयास ब्लॉक में अपवाद फेंक दें?
- 15. symfony2 और फेंक अपवाद त्रुटि
- 16. अपवाद फेंक दें लेकिन स्टैक ट्रेस जारी रखें
- 17. फेंक अपवाद
- 18. एक शून्य मूल्य में जोड़ने का प्रयास क्यों नहीं करता एक अवैधऑपरेशन अपवाद फेंक देता है?
- 19. 'System.Windows.Data.Binding' पर मूल्य प्रदान करें एक अपवाद
- 20. jQuery.each() का उपयोग करते समय एक मूल्य लौटें?
- 21. क्या आप अंततः ब्लॉक को चलाते हैं, भले ही आप एक नया अपवाद फेंक दें?
- 22. VS2010 नई फ़ाइल फेंक दें संपत्ति सेट करें 'System.Windows.ResourceDictionary.DeferrableContent' ने अपवाद फेंक दिया
- 23. डाटा बाध्यकारी और सेटर में अपवाद फेंक
- 24. अपवाद और वापसी मूल्य
- 25. System.Drawing.Icon निर्माता फेंक अपवाद
- 26. कस्टम अपवाद फेंक
- 27. matlab बाधा फेंक अपवाद
- 28. सी # उपयोग पर पर्दा फेंक दें?
- 29. क्यों एक गणक वापस लौटें?
- 30. सी में एक सरणी लौटें ++
जो मैंने पाया था। मैंने सोचा कि अंततः ब्लॉक के साथ कुछ चाल हो सकती है। – mark
एक बार अपवाद को फेंकने के बाद आपका प्रोग्राम चलना बंद कर देता है तो इमोहो दोनों करना असंभव है। मुझे आश्चर्य है कि क्या आपके पास 'प्रयास' ब्लॉक में रिटर्न स्टेटमेंट है, क्या प्रोग्राम अभी भी 'अंतिम' ब्लॉक पास करता है, क्योंकि यदि आप कोशिश ब्लॉक में एक मान वापस कर देंगे और अंतिम ब्लॉक में अपवाद फेंक देंगे तो आप करेंगे दोनों ने किया है .. –
@ करेल-जन मिस्सेगर्स: नहीं, जावा में आपका प्रोग्राम ** निश्चित रूप से ** अपवाद को फेंकने के बाद चलना बंद नहीं करता है। आप इस बात से उलझन में हैं कि जावा अपवाद कैसे काम करते हैं और स्पष्ट रूप से अभी तक कोई बहु-थ्रेडेड जावा प्रोग्रामिंग नहीं किया है। जब आप किसी अन्य थ्रेड में अनचेक अपवाद होता है तो आपके पास बहुत सारे थ्रेड काम कर सकते हैं। ऐसे कई मामले हैं जहां मरने वाले थ्रेड को स्वचालित रूप से पुनरारंभ किया जाता है (कुछ ओएस/जेवीएम पर सबसे प्रसिद्ध स्विंग के ईडीटी हैं: यदि ईडीटी मर जाता है, तो एक नया ईडीटी पुनरारंभ होता है)। – SyntaxT3rr0r