私の理解でthrow
は、これは基本的なjvmコマンドです。これが呼び出されると、JVMは「現在のコールスタックがそれをキャッチできるかどうかをチェックします」。それができない場合、javaは、returnが呼び出されたかのように、呼び出しスタックを単純にポップします。次に、jvmは「現在のコールスタックがそれをキャッチできるかどうかをチェックします」などと再帰的に続きます。
私の質問:JVMがコールスタックのどこで特定の例外をキャッチできるかをアルゴリズムで知るにはどうすればよいですか?例外をコードブロックにマッピングする各コールスタックエントリにメタデータが保存されていますか?どういうわけかこれを追跡する静的データ構造がヒープにありますか?どこかにそれを追跡するデータがなければならないからです。