अंत में ब्लॉक में फेंके गए अपवाद पहले से आजमाए गए या पकड़ने वाले ब्लॉक में दिए गए अपवाद को दबा देते हैं।
जावा 7 उदाहरण: http://ideone.com/0YdeZo
से जावाडोक के उदाहरण:
static String readFirstLineFromFileWithFinallyBlock(String path)
throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) br.close();
}
}
हालाँकि, इस उदाहरण में, यदि विधियाँ पढ़ती हैं और दोनों थ्रो अपवादों को बंद कर देती हैं, तो विधि पठनFirstLineFromFileWithFinallyBlock अंत में ब्लॉक से फेंके गए अपवाद को फेंक देती है; कोशिश ब्लॉक से फेंके गए अपवाद को दबा दिया गया है।
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());
}
}
एक अपवाद कोशिश-कोड संसाधनों के साथ जुड़े कोड के ब्लॉक से फेंका जा सकता है। उपरोक्त उदाहरण में, ट्रायल ब्लॉक से एक अपवाद को फेंका जा सकता है, और दो अपवादों को ट्राइ-रिसोर्स संसाधनों के स्टेटमेंट से फेंका जा सकता है, जब यह जिपफाइल और बफर्डविटर ऑब्जेक्ट्स को बंद करने की कोशिश करता है। यदि प्रयास ब्लॉक से एक अपवाद को फेंक दिया जाता है और एक या अधिक अपवादों को प्रयास-के-संसाधन विवरण से फेंक दिया जाता है, तो उन अपवादों को प्रयास-से-संसाधनों के कथन से दबा दिया जाता है, और ब्लॉक द्वारा फेंका गया अपवाद एक है यह लिखने के द्वारा फेंक दिया जाता है ।TileFileZipFileContents विधि। आप इन ब्लॉक किए गए अपवादों को पुनः प्रयास ब्लॉक द्वारा फेंके गए अपवाद से Throwable.getSuppressed पद्धति से कॉल करके प्राप्त कर सकते हैं।
प्रश्न से कोड में, प्रत्येक ब्लॉक स्पष्ट रूप से पुराने अपवाद को छोड़ रहा है, इसे लॉग भी नहीं कर रहा है, अच्छा नहीं है जब आप कुछ प्रश्नों को हल करने की कोशिश कर रहे हैं:
http://en.wikipedia.org/wiki/Error_hiding