ほとんどすべての言語に見られ、私はほとんどの場合それを使用してきました。それが内部的なものかどうかはわかりませんが、実際にどのように機能するのだろうか.
任意の言語の実行時にネイティブ レベルでどのように機能しますか?
例: try 内で stackoverflow または divisionbyzero が発生した場合、 catch はどのようにしてプログラムの落下を防ぎますか?
ほとんどすべての言語に見られ、私はほとんどの場合それを使用してきました。それが内部的なものかどうかはわかりませんが、実際にどのように機能するのだろうか.
任意の言語の実行時にネイティブ レベルでどのように機能しますか?
例: try 内で stackoverflow または divisionbyzero が発生した場合、 catch はどのようにしてプログラムの落下を防ぎますか?
「任意の言語の実行時にネイティブ レベルで」というステートメントは矛盾した表現です。例外処理のすべてのネイティブ部分は、言語ではなくプラットフォームに依存します。例外処理の一部は、ハードウェアに依存することさえあります (たとえば、ゼロ除算は常にハードウェア例外です)。
.NET、Windows、x86 でのゼロ除算の特定のケースでは、次のようになります。
一般に、例外は、スレッド ローカルの状態情報 (例外) へのポインターを運ぶロング ジャンプと考えることができます。ロング ジャンプのターゲットは、通常、コンパイル時に認識されます。
すべての言語に例外処理が組み込まれているわけではありません。たとえば、C には構造化された例外処理がありません。
例外がスローされ、制御が try ブロックからハンドラーに渡されると、ランタイムは、try ブロックの開始以降に構築されたすべての自動オブジェクトのデストラクターを呼び出します。このプロセスは、スタックの巻き戻しと呼ばれます。