英語版
このページの英語版を見る

rt.deh

例外処理サポートルーチンのエントリポイント。
DMDがサポートする例外処理には3つのスタイルがある: DWARF、Win32、Win64である。Win64コードはPOSIXもサポートしている。 これらのスキームのサポートは、rt.dwarfehrt.deh_win32 、および rt.deh_win64_posix にあり、ここに一般にインポートされている。
ユーザーによって例外がスローされると、コンパイラーは のようなコードを(DWARF例外用の) に変換する。 のようなコードは、_d_throwdwarf (DWARF例外用)またはthrow e; (Win32 / Win64)に変換される。 または_d_throwc (Win32 / Win64)に変換する。引数としてException オブジェクトを指定する。
これらの関数の処理中に、最終的に_d_createTrace を呼び出す、 の戻り値をException オブジェクトに格納する。 _d_traceContext これはThrowable.TraceInfo を実装したオブジェクトである。 _d_traceContext は設定可能なフックで、デフォルトでは core.runtime : defaultTraceHandler を呼び出す。backtrace を呼び出すか、スタック・フレーム(void* ポインタ)の配列を返すオブジェクトに格納する。 を呼び出す。 defaultTraceHandler はGCで割り当てられたインスタンスを返すことに注釈: 」、 したがって、Exception をスローしている最中にGC割り当てが発生する可能性がある。
Throwable.TraceInfo -実装は、関数名を解決してはならない、 opApply関数が呼び出されるまで、ファイル名、行番号は解決されない。 ユーザーがtoString を呼び出すまで、デバッグ情報を読み込むオーバーヘッドを回避する。 ユーザーがThrowable.message を呼び出すだけであれば(あるいはThrowable.msg を直接使用する)、 のオーバーヘッドのみが発生する、 backtrace のオーバーヘッドを支払うだけである。
License:
Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)
Authors:
Walter Bright

ソース rt/deh.d