अपवाद पदानुक्रम में, RuntimeException
और Error
के वंशज रनटाइम अपवाद/त्रुटियां हैं।रनटाइम अपवाद और त्रुटि
दोनों के बीच अंतर यह है: RuntimeException
के तहत उन गरीब प्रोग्रामिंग/डिजाइन की वजह से होते हैं, और Error
के उन जो कि/डेवलपर द्वारा नियंत्रित नहीं किया जाना चाहिए नहीं किया जा सकता है कर रहे हैं।
आवेदन के भीतर एक अपवाद है, उदाहरण के लिए , कोडिंग जब व्यापार तर्क में कुछ होता है एक अपवाद फेंकने के लिए के लिए, RuntimeException
बढ़ा दिया गया है।
सवाल यह है, वास्तव में क्या RuntimeException
का विस्तार और Error
विस्तार के बीच अंतर है - बुरा व्यवहार कि विस्तार Error
छोड़कर जाता है?
कौन कहता है कि यह * खराब अभ्यास है? निश्चित रूप से ऐसा कुछ नहीं जो आप हर दिन करते हैं, लेकिन मुझे संदेह नहीं है कि ऐसे मामले हैं जहां इसे योग्यता दी जा सकती है। –
@HotLicks यहोशू बलोच ने अपनी पुस्तक प्रभावी जावा में ऐसा करने की सिफारिश की गई है: "जब जावा भाषा विशिष्टता यह आवश्यकता नहीं है, इस बात की प्रबल परंपरा है कि त्रुटियों JVM द्वारा उपयोग के लिए आरक्षित हैं संसाधन की कमी, अपरिवर्तनीय विफलताओं इंगित करने के लिए है, या अन्य की स्थिति, यह निष्पादन जारी रखने के लिए असंभव बना है। इस सम्मेलन के लगभग सार्वभौमिक स्वीकृति को देखते हुए यह सबसे अच्छा किसी भी नए त्रुटि उपवर्गों लागू करने के लिए नहीं है। इसलिए, ** अनियंत्रित throwables के सभी आप को लागू उपवर्ग चाहिए ** 'RuntimeException' (प्रत्यक्ष या परोक्ष रूप से)।" – alfasin
@alfasin - तो सिस्टम घड़ी को पुनर्प्राप्त करते समय XYZ ऑपरेटिंग सिस्टम हार्डवेयर विफलता का पता लगा सकता है, लेकिन इसे उस त्रुटि को कॉल नहीं करना चाहिए? एक एपीआई जो रासायनिक संयंत्र में वाल्व को नियंत्रित करता है, हार्डवेयर विफलता का पता लगा सकता है और फिर उसे एक त्रुटि नहीं कहनी चाहिए? –