कथनों का एक खंड जिस तक नियंत्रण कभी नहीं पहुंच सकता किसी भी मामले में पहुंच योग्य ब्लॉक . के रूप में कहा जा सकता है . पहुंचने योग्य ब्लॉक जावा द्वारा समर्थित नहीं हैं। अपवाद वर्ग के संदर्भ में उल्लिखित कैच ब्लॉक हमेशा अंतिम होना चाहिए और होना चाहिए कैच ब्लॉक क्योंकि अपवाद सुपरक्लास है सभी अपवादों में से। जब हम कई कैच ब्लॉक रखते हैं, तो कैच ब्लॉक का क्रम सबसे विशिष्ट से सबसे सामान्य ब्लॉक तक होना चाहिए . यानी अपवाद के उपवर्ग पहले और सुपरक्लास बाद में आने चाहिए। यदि हम सुपरक्लास को पहले और उपवर्गों को बाद में रखते हैं, तो कंपाइलर एक अगम्य कैच ब्लॉक त्रुटि को फेंक देगा ।
सिंटैक्स
try { // statements } catch(Exception e) { System.out.println(e); } catch(NumberFormatException nfe) { //unreachable block. Not supported by Java, leads to an error. System.out.println(nfe); }
एक कैच क्लॉज को कंपाइलर द्वारा पहुंच योग्य माना जाता है यदि निम्नलिखित दोनों स्थितियां सत्य हैं
- कोशिश ब्लॉक में फेंका गया एक चेक अपवाद सी के पैरामीटर के लिए असाइन करने योग्य है।
- कोई पिछला कैच क्लॉज नहीं है जिसका पैरामीटर प्रकार C के पैरामीटर प्रकार के बराबर या सुपरटाइप है
एक कैच क्लॉज को कंपाइलर द्वारा पहुंच योग्य माना जाता है, यदि निम्न में से दोनों स्थितियां सत्य हैं तो पहुंच योग्य नहीं हो सकता है
- कैच क्लॉज पैरामीटर प्रकार ई में कोई अनियंत्रित अपवाद शामिल नहीं है।
- प्रयास ब्लॉक में फेंके गए सभी अपवाद जिनका प्रकार ई का एक (सख्त) उपप्रकार है, पहले से ही पिछले कैच क्लॉज द्वारा नियंत्रित किया जाता है।
उदाहरण
public class UnreachableBlock{ public static void main(String[] args) { try { int i = Integer.parseInt("abc"); //This statement throws NumberFormatException } catch(NumberFormatException nfe) { System.out.println("This block handles NumberFormatException"); } catch(Exception e) { System.out.println("This block handles all exception types"); } catch (Throwable t) { System.out.println("Throwable is super class of Exception"); } } }
आउटपुट
This block handles NumberFormatException