শেষ অবধি ব্লকযুক্ত ব্যতিক্রমগুলি চেষ্টা বা ক্যাচ ব্লকের আগে ছুঁড়ে দেওয়া ব্যতিক্রমকে দমন করে।
জাভা 7 উদাহরণ: http://ideone.com/0YdeZo
থেকে Javadoc এর উদাহরণ:
static String readFirstLineFromFileWithFinallyBlock(String path)
throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) br.close();
}
}
যাইহোক, এই উদাহরণে, পদ্ধতিগুলি যদি লাইন পড়ায় এবং উভয়ই ব্যতিক্রমগুলি বন্ধ করে দেয়, তবে পদ্ধতিটি পড়ুন ফার্স্টলাইনফ্রমফাইলে ফিনলি ব্লক অবশেষে ব্লক থেকে ফেলে দেওয়া ব্যতিক্রম ছোঁড়ে; চেষ্টা ব্লক থেকে নিক্ষিপ্ত ব্যতিক্রম চাপা দেওয়া হয়।
try-with
জাভা 7 এর নতুন সিনট্যাক্স ব্যতিক্রমী দমনের আরও একটি পদক্ষেপ যুক্ত করেছে: ট্রাই ব্লক করা ব্যতিক্রমগুলি চেষ্টা-সহ অংশে ফেলে দেওয়া লোকদের দমন করে।
একই উদাহরণ থেকে:
try (
java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName);
java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)
) {
for (java.util.Enumeration entries = zf.entries(); entries.hasMoreElements();) {
String newLine = System.getProperty("line.separator");
String zipEntryName = ((java.util.zip.ZipEntry)entries.nextElement()).getName() + newLine;
writer.write(zipEntryName, 0, zipEntryName.length());
}
}
সম্পদ বিবরণীর সাথে যুক্ত কোডের ব্লক থেকে একটি ব্যতিক্রম ছুঁড়ে ফেলা যায়। উপরের উদাহরণে ট্রাই ব্লক থেকে একটি ব্যতিক্রম ছুঁড়ে ফেলা যায় এবং যখন জিপফায়ার এবং বাফারড্রাইটার অবজেক্টগুলিকে বন্ধ করার চেষ্টা করে তবে রিসোর্স-উইথ স্টেটমেন্ট থেকে দু'টি ব্যতিক্রম পর্যন্ত ছুঁড়ে দেওয়া যায়। যদি চেষ্টা ব্লক থেকে একটি ব্যতিক্রম ছুঁড়ে দেওয়া হয় এবং চেষ্টা করা সম্পদ-বিবৃতি থেকে এক বা একাধিক ব্যতিক্রম ছুঁড়ে ফেলা হয়, তবে চেষ্টা-সহ-সংস্থার বিবৃতি থেকে ছুঁড়ে দেওয়া ব্যতিক্রমগুলি দমন করা হয়, এবং ব্লকটি ছুঁড়ে দেওয়া ব্যতিক্রমটি হ'ল যা WritToFileZipFileContents পদ্ধতি দ্বারা নিক্ষেপ করা হয়। আপনি চেষ্টা ব্লক দ্বারা ছোঁড়া ব্যতিক্রম থেকে থ্রোয়েবল.জেটসপ্রেসড পদ্ধতিতে কল করে এই চাপা ব্যতিক্রমগুলি পুনরুদ্ধার করতে পারেন।
প্রশ্ন থেকে কোডে, প্রতিটি ব্লক পুরানো ব্যতিক্রমটি স্পষ্টতই বাতিল করে দিচ্ছে, এমনকি এটি লগ করাও নয়, আপনি যখন কিছু বাগ সমাধান করার চেষ্টা করছেন তখন ভাল নয়:
http://en.wikipedia.org/wiki/Error_hiding