Java Virtual Machine Specification के आधार पर, अपवाद संकलित किए जाते हैं (सारांश में) इस प्रकार है:
- कोशिश कोड सामान्य रूप से चलाया जाता है
- प्रत्येक कैच ब्लॉक सही कैच ब्लॉक करने के लिए निष्पादन प्रवाह रीडायरेक्ट करने के लिए एक अपवाद तालिका है जैसे कि यह एक अलग विधि
- थे संकलित किया गया है
+०१२३५१६४१०
एक बहु पकड़ खंड का उपयोग करते समय, कैच ब्लॉक समान होता है (केवल एक बार प्रकट होता है), लेकिन अपवाद तालिका में मूल्यों के साथ, और लक्ष्य मूल्यों के साथ एक और प्रविष्टि होगी।
उदाहरण के लिए, इस कोड:
public static void main(String args[]) throws InterruptedException {
try {
System.out.println("why not?");
} catch (IllegalArgumentException e) {
System.out.println("here");
} catch (IllegalStateException | ArithmeticException e) {
System.out.println("there");
}
}
निम्नलिखित अपवाद तालिका (मेरी मशीन पर) उत्पन्न करता है:
from to target type
0 8 11 Class java/lang/IllegalArgumentException
0 8 23 Class java/lang/IllegalStateException
0 8 23 Class java/lang/ArithmeticException
की डुप्लीकेट [जावा 7 कोशिश के साथ-संसाधनों बाईटकोड बराबर क्या उपयोग कर रहा है कोशिश-पकड़ने-अंत में?] (http://stackoverflow.com/questions/7860137/what-is-the-java-7-try-with-resources-bytecode-equivalent-using-try-catch-finall)। –