2009-08-27 6 views

答えて

2

VBのOn Error Goto X/Resume Nextパターンのように聞こえます。そうなら、いいえ。

VB.NETでも可能ですが、主に下位互換性があります。 .NETでは、それは実際にそれを使用する誰も見たことがないような重大なハックです。

2

これはできません。

.NETには例外フィルタリングメカニズムがありますが、C#言語では公開されていません。また、例外が発生した時点で実行を再開できるとは思いません。これは、例外の型だけでなく、それ以外のものに基づいて例外をキャッチするかどうかを決定するためのものです。

3

CLRは、filter/endfilter IL句を使用して2パス例外ディスパッチの例外フィルタをサポートしますが、それを直接実装する低レベル命令はC#コンパイラでサポートされていません。

また、サポートされている句からの唯一の2つの戻り値は0と1であり、それぞれexception_continue_searchexception_execute_handlerを参照しています。したがって、例外の時点での実行の再開はオプションではありません。

+0

"フィルタハンドラを除いて、例外が発生した場所で実行を再開することはできません。 12.4.2.5例外処理の概要。 – tgiphil

+0

@tgiphilしかし、 'filter' /' endfilter'の*指定された*戻り値は、検索の続行とハンドラの実行です。あなたが-1(または0xffffffff)を返した場合、SEHと同じように動作するかもしれません。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms680634%28v=vs.85%29.aspxを参照してください。 –

関連する問題