हां , हम एक . घोषित कर सकते हैं दूसरे ट्राइ-कैच ब्लॉक में ट्राइ-कैच ब्लॉक, इसे नेस्टेड ट्राइ-कैच ब्लॉक कहा जाता है।
नेस्टेड ट्राई-कैच ब्लॉक
- यदि कोई आंतरिक प्रयास करने वाले राजनेता टी कोई मेल खाने वाला कैच स्टेटमेंट . नहीं है किसी विशेष अपवाद के लिए, नियंत्रण अगले प्रयास कथन कैच हैंडलर में स्थानांतरित कर दिया जाता है जो मैचिंग कैच स्टेटमेंट के लिए अपेक्षित हैं।
- यह तब तक जारी रहता है जब तक कि कैच स्टेटमेंट सफल नहीं हो जाता , या सभी नेस्टेड प्रयास . तक बयान किए जाते हैं।
- यदि कोई कैच स्टेटमेंट मैच नहीं करता है, तो जावा रन-टाइम सिस्टम अपवाद को संभालेगा।
- कब नेस्टेड ट्राई ब्लॉक उपयोग किया जाता है, आंतरिक प्रयास ब्लॉक पहले निष्पादित किया जाता है। इनर ट्राई ब्लॉक में फेंका गया कोई भी अपवाद संबंधित कैच ब्लॉक में पकड़ा जाता है। यदि कोई मिलान कैच ब्लॉक नहीं मिलता है, तो बाहरी प्रयास ब्लॉक का कैच ब्लॉक करें सभी नेस्टेड कोशिश बयान समाप्त होने तक निरीक्षण किया जाता है। यदि कोई मेल खाने वाला ब्लॉक नहीं मिलता है, तो जावा रनटाइम एनवायरनमेंट निष्पादन को संभालता है।
सिंटैक्स
try {
statement 1;
statement 2;
try {
statement 1;
statement 2;
}
catch(Exception e) {
// catch the corresponding exception
}
}
catch(Exception e) {
// catch the corresponding exception
}
............. उदाहरण
import java.io.*;
public class NestedTryCatchTest {
public static void main (String args[]) throws IOException {
int n = 10, result = 0;
try { // outer try block
FileInputStream fis = null;
fis = new FileInputStream (new File (args[0]));
try { // inner trty block
result = n/0;
System.out.println("The result is"+result);
}
catch(ArithmeticException e) { // inner catch block
System.out.println("Division by Zero");
}
}
catch (FileNotFoundException e) { // outer catch block
System.out.println("File was not found");
}
catch(ArrayIndexOutOfBoundsException e) { // outer catch block
System.out.println("Array Index Out Of Bounds Exception occured ");
}
catch(Exception e) { // outer catch block
System.out.println("Exception occured"+e);
}
}
} आउटपुट
Array Index Out Of Bounds Exception occured