
Pythonなどの言語処理系で、例外機構がどのように実装されているか興味があり知りたく思っています。
Pythonのopen()を例にとると、以下のように理解しているのですが、合っていますでしょうか?
以下ざっくりとした自分の理解
Pythonの組み込み関数であるopen()は、内部的にファイルをオープンするシステムコールと、システムコールの戻り値でエラーが返ってきた場合に例外処理ルーチンにジャンプするコードにコンパイルされる。 システムコールを呼び出した結果、指定したファイルが存在せずエラーが返ってきた場合は、例外処理ルーチン(例外ハンドラ)にジャンプする。 ジャンプ先の例外ハンドラを求める方法には表引き法や2返戻値法、setjmp法などがある。 もし該当する例外ハンドラが見つからない場合は、エラーメッセージを表示し、プログラムを終了する処理を行う。
open()がコンパイルされると、システムコールと、システムコールの戻り値によって例外処理ルーチンに分岐するような処理になっているといった記載が調べても見当たらなかったのですが、想像で上記のように考えています。
もし詳しい方がいれば実際の動きを教えていただければ幸いです。
どうぞよろしくお願いします。

何のために何を聞きたいのかよく分かりませんが、低レイヤの実装を知りたいならソースを追ってください。
cpythonのbuilt-inのopen実装なら↓辺りです。
https://github.com/python/cpython/blob/baf234971f20e5e6c7438f46889e9c8f172cc25e/Python/fileutils.c#L1495-L1554
ありがとうございます。単純に興味というか、プログラミングを学ぶ中で素朴な疑問としてどうなっているのか気になったという理由です。
cpythonのソースを追ってみようとしましたが、C言語自体あまり分からないため、なかなか答えに辿り着くのは難しそうです・・・
(なおstack overflowで見ていたところ、fileutils.cのopenはbuilt-inのopen関数ではなく簡易なテスト用?の関数のようで、https://github.com/python/cpython/blob/v3.2.1/Modules/_io/_iomodule.c がPython 3のopenの本当の実装が書いてある箇所らしいです)

違っていません。
単に興味があるというのは構いませんが、他人に聞く以上最低限cpythonを読める程度の知識は必要だと思います。アセンブラまで追うつもりの人がCすら分からないのでは、話になりません。

ん?コメントを私の返信コメント後に書き換えたんですね。返事した後に書き換えると読む人が分かりにくいので続けてください。
内容的には違ってましたね。
ただstackoverflowにもいろいろな質問/回答があるので、URLまで書かないといろいろ不明です。中にはfileutils.cだと回答して質問者が納得してるものもあり、今回はそれをベースに調べただけです。
別の始点から調べたものだと、まずpythonのインタプリタから
>>> help(open)
として以下の出力を見ます。
Help on built-in function open in module io:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
...
ここでbuilt-in function open in module ioと記述されていることから、ドキュメント上では実体がioモジュールであると説明されていることが分かります。ここを足掛かりに3.10のドキュメントベースで
https://docs.python.org/3.10/library/io.html#io.open
を見ると明確にエイリアスである旨記載がありました。そのままコードを読むと
https://github.com/python/cpython/blob/3.10/Lib/io.py#L55
からopenは↓であることが分かります。
https://github.com/python/cpython/blob/3.10/Modules/_io/_iomodule.c#L232-L507
stackoverflowのこの質問によると、
https://stackoverflow.com/questions/64357158/difference-between-cpython-io-open-impl-and-py-open-impl
_Py_OpenはPOSIXのopenシステムコールを意識した形になっていて、CPython内部で使用される関数をその拡張機能で(ある程度バージョンを自由に)使用できるようにしたAPIの1つだそうです。
実際使用箇所を調べてみるとテストではなくCPython内部のいくつかの場所で使用されていますが、io.open内では使用されておらず、Pythonオブジェクトを使用してその中でopenシステムコールを直接使っているようです。
本題からは外れていますが、訂正は以上です。
自分で調べた結果を載せられるようにしましょう。
