सामान्य रूप से, जावा में अपवादों को संभालने के दो तरीके हैं।क्यों RuntimeException को एक स्पष्ट अपवाद हैंडलिंग की आवश्यकता नहीं है?
- जोड़ें विधि हस्ताक्षर में घोषणा फेंकता आज़माएं/कैच ब्लॉक के साथ
- चारों ओर।
हालांकि, मैंने देखा है कि कुछ अपवाद, विशेष रूप से RuntimeException
से प्राप्त होने वाले कुछ अपवादों को ऐसे स्पष्ट अपवाद हैंडलिंग की आवश्यकता नहीं है।
उदाहरण के लिए, मैंने नीचे एक नमूना विधि बनाई है और उन लोगों के लिए "आवश्यक नहीं" चिह्नित किया गया है जिन्हें स्पष्ट अपवाद हैंडलिंग की आवश्यकता नहीं है।
public void textException(){
int i = (new Random()).nextInt(100);
switch (i){
case 1:
throw new NullPointerException(); //Not required
case 2:
throw new NumberFormatException(); //Not required
case 3:
throw new RuntimeException(); //Not required
case 4:
throw new ClassNotFoundException(); //Required
case 5:
throw new IOException(); //Required
case 6:
throw new Exception(); //Required
default:
return;
}
}
मैंने देखा है कि Exception
से RuntimeException
इनहेरिट करती है।
यह क्यों है कि RuntimeException
को संकलित करने के लिए स्पष्ट रूप से पकड़ा जाने की आवश्यकता नहीं है जबकि अन्य Exceptions
करते हैं?
जिन्हें जावा में चेक किए गए और अनचेक अपवाद कहा जाता है। और इन पर कई बार चर्चा की गई है http://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation –
अपने फेंकने वाले खंड में घोषित करने के लिए एक विधि की आवश्यकता नहीं है RuntimeException के किसी उप-वर्ग जिसे विधि के निष्पादन के दौरान फेंक दिया जा सकता है लेकिन पकड़ा नहीं जाता है। – sudmong