英語版
このページの英語版を見る
rt.deh
例外処理サポートルーチンのエントリポイント。
DMDがサポートする例外処理には3つのスタイルがある:
DWARF、Win32、Win64である。Win64コードはPOSIXもサポートしている。
これらのスキームのサポートは、rt.dwarfeh 、rt.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
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku