मेरी समझ से, throw
एक प्राइमेटिव जेवीएम कमांड है। जब इसे कहा जाता है, तो JVM "जांचता है कि वर्तमान कॉल स्टैक इसे पकड़ सकता है"। यदि यह नहीं हो सकता है, तो जावा बस कॉल स्टैक को लगभग ठीक उसी तरह पॉप करता है जैसे कि एक रिटर्न कहा जाता था। तो जेवीएम "जांचता है कि वर्तमान कॉल स्टैक इसे पकड़ सकता है" और फिर रिकर्सिव पर।जेवीएम कैसे पता चलता है कि रनटाइम पर अपवाद कैसा है?
मेरा प्रश्न: जेवीएम के लिए यह एल्गोरिदमिक रूप से संभव है कि कॉल स्टैक में कहां दिया गया अपवाद पकड़ सकता है? क्या कोड ब्लॉक में प्रत्येक कॉल स्टैक एंट्री मैपिंग अपवादों में मेटाडेटा संग्रहीत है? क्या ढेर में एक स्थिर डेटा संरचना है जो किसी भी तरह इसका ट्रैक रखती है? क्योंकि कहीं भी डेटा को ट्रैक रखने के लिए डेटा होना चाहिए।
संबंधित: http://stackoverflow.com/questions/10301244/how-is-multi-catch-implemented-in-java-7 – assylias