C#を使用してフィルタ関数でいくつかの例外処理を行い、C++のように例外が発生した時点で実行を継続できるのですか?例外フィルタを使用したC#の "EXCEPTION_CONTINUE_EXECUTION"
ありがとう、
C#を使用してフィルタ関数でいくつかの例外処理を行い、C++のように例外が発生した時点で実行を継続できるのですか?例外フィルタを使用したC#の "EXCEPTION_CONTINUE_EXECUTION"
ありがとう、
VBのOn Error Goto X/Resume Nextパターンのように聞こえます。そうなら、いいえ。
VB.NETでも可能ですが、主に下位互換性があります。 .NETでは、それは実際にそれを使用する誰も見たことがないような重大なハックです。
これはできません。
.NETには例外フィルタリングメカニズムがありますが、C#言語では公開されていません。また、例外が発生した時点で実行を再開できるとは思いません。これは、例外の型だけでなく、それ以外のものに基づいて例外をキャッチするかどうかを決定するためのものです。
CLRは、filter
/endfilter
IL句を使用して2パス例外ディスパッチの例外フィルタをサポートしますが、それを直接実装する低レベル命令はC#コンパイラでサポートされていません。
また、サポートされている句からの唯一の2つの戻り値は0と1であり、それぞれexception_continue_search
とexception_execute_handler
を参照しています。したがって、例外の時点での実行の再開はオプションではありません。
"フィルタハンドラを除いて、例外が発生した場所で実行を再開することはできません。 12.4.2.5例外処理の概要。 – tgiphil
@tgiphilしかし、 'filter' /' endfilter'の*指定された*戻り値は、検索の続行とハンドラの実行です。あなたが-1(または0xffffffff)を返した場合、SEHと同じように動作するかもしれません。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms680634%28v=vs.85%29.aspxを参照してください。 –