C#のコーディングパターンを調査しています。このクラスでは、 "使用する"本体が正常に終了したか例外を出したかによって、Dispose()
メソッドが異なる処理を行う特別なクラスで "using"句を使用します。 。.NET例外が処理されているかどうかを判断する方法?
私の理解している限り、CLRは "catch"ハンドラによって消費されるまで処理されている現在の例外を追跡します。しかし、コードがアクセスするためにこの情報が何らかの方法で公開されているかどうかは完全には明らかではありません。あなたはそれがあるかどうかを知っていますか?もしそうなら、それにアクセスする方法はありますか?例えば
:
using (var x = new MyObject())
{
x.DoSomething();
x.DoMoreThings();
}
class MyObject : IDisposable
{
public void Dispose()
{
if (ExceptionIsBeingHandled)
Rollback();
else
Commit();
}
}
その成功/失敗はx.Complete()
への呼び出しによって決まるのではなく、using
本体が正常に終了したかどうかに基づいていないことを除いてこれは、ほとんどSystem.Transactions.TransactionScope
のように見えます。
私はあなたがなぜこれをやろうとしているのか尋ねる必要があると思います。 Dispose()パターンは、例外を発生させて制御ロジックを実装するためのものではありません。 –
全体のアイデアに疑問を呈することは、常に公正なポイントです。私はこれが "使用する"という意味ではないことに感謝します。私はそれが悪いコードにつながることができて感謝します。私はまだ答えに興味があります:) –
この質問はなぜ下降ですか? – Olli