Da quanto ho capito, throw
è un comando jvm primitivo. Quando viene chiamato, la JVM "controlla se lo stack di chiamate corrente può prenderlo". se non può, java semplicemente fa apparire lo stack di chiamata quasi esattamente come se fosse stato chiamato un ritorno. quindi jvm "controlla se lo stack di chiamate corrente può prenderlo" e così via ricorsivamente.In che modo la JVM sa dove rilevare un'eccezione in fase di runtime?
La mia domanda: come è algoritmicamente possibile per JVM sapere dove nello stack di chiamate è possibile rilevare una determinata eccezione? Sono presenti metadati memorizzati in ogni voce dello stack delle chiamate che associano le eccezioni ai blocchi di codice? c'è una struttura di dati statici nell'heap che in qualche modo tiene traccia di questo? perché da qualche parte ci devono essere dati che tengono traccia di ciò.
correlati: http://stackoverflow.com/questions/10301244/how-is-multi-catch-implemented-in-java-7 – assylias