হ্যাঁ , আমরা একটি ঘোষণা করতে পারি অন্য ট্রাই-ক্যাচ ব্লকের মধ্যে ট্রাই-ক্যাচ ব্লক, একে বলা হয় নেস্টেড ট্রাই-ক্যাচ ব্লক।
নেস্টেড ট্রাই-ক্যাচ ব্লক
- যদি একটি অভ্যন্তরীণ চেষ্টা স্টেটম্যান t একটি মিলিত ক্যাচ স্টেটমেন্ট নেই একটি বিশেষ ব্যতিক্রমের জন্য, নিয়ন্ত্রণটি পরবর্তী ট্রাই স্টেটমেন্টে স্থানান্তরিত হয় হ্যান্ডলার ধরতে যেগুলো একটি মিলে যাওয়া ক্যাচ স্টেটমেন্টের জন্য প্রত্যাশিত।
- এটি চলতে থাকে যতক্ষণ না কোনো একটি ক্যাচ স্টেটমেন্ট সফল হয় , অথবা সমস্ত নেস্টেড চেষ্টা না হওয়া পর্যন্ত বিবৃতি সম্পন্ন হয়।
- যদি কেউ ক্যাচ স্টেটমেন্ট মেলে না, তাহলে জাভা রান-টাইম সিস্টেম ব্যতিক্রম পরিচালনা করবে।
- যখন নেস্টেড ব্লক করার চেষ্টা করুন ব্যবহৃত হয়, ভিতরের চেষ্টা ব্লক প্রথম মৃত্যুদন্ড কার্যকর করা হয়। অভ্যন্তরীণ চেষ্টা ব্লকে নিক্ষিপ্ত কোনো ব্যতিক্রম সংশ্লিষ্ট ক্যাচ ব্লক-এ ধরা পড়ে। যদি একটি ম্যাচিং ক্যাচ ব্লক পাওয়া না যায়, তাহলে বাইরের চেষ্টা ব্লকের ক্যাচ ব্লক সমস্ত নেস্টেড ট্রাই স্টেটমেন্ট শেষ না হওয়া পর্যন্ত পরিদর্শন করা হয়। যদি কোন মিলিত ব্লক পাওয়া না যায়, জাভা রানটাইম এনভায়রনমেন্ট মৃত্যুদন্ড পরিচালনা করে।
সিনট্যাক্স
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