3

Rubyには、開始/レスキューに入るelseブロックがあります(.NETの人はtry / catch)

begin
 #some code
rescue
 #oh noes! Catches errors like catch blocks in .NET
else
 #only executes when NO errors have occured
ensure
 #always executes - just like the finally in .NET
end

elseブロックのコードは、エラーが発生していない場合にのみ実行されます。この機能を提供する.NETの構造はありますか?

4

2 に答える 2

3

.NET では、次のコードをリストするだけです#some code

try
{
   // some code
   // Only executes when NO errors have occurred
}
catch (Exception e)
{
    // Catches errors
}
finally
{
    // Always executes
}

内の例外は、 then// some codeにジャンプするため、「実行のみ」セクションの発生を防ぎます。catchfinally

于 2013-02-15T23:26:30.000 に答える
1

例外処理に関して、他の言語では可能ですが、C# では不可能なことがあります。そのような例の 1 つがfaultハンドラーです。IL では、エラーが発生した場合にのみ起動するハンドラーを定義できます。

これfaultはあなたが望むものとは逆のようですが、例外をどのように処理したかに関係なく、エラーが発生した場合にのみ一部のコードが実行されるようにロジックを構築できます。.NET はtry..fault反復子のブロックを生成します。Bart De Smet はかつて、彼のブログの読者に障害ハンドラーのシミュレーションを試みるよう呼びかけました。詳細については、こちら を参照してください

于 2013-02-15T23:51:54.680 に答える