私は、イベントを使用してエラーを通知するビジネスおよびデータ層のパターンを使用するコードに取り組んでいます。
resource = AllocateLotsOfMemory();
if (SomeCondition())
{
OnOddError(new OddErrorEventArgs(resource.StatusProperty));
resource.FreeLotsOfMemory();
return;
}
これは、特にこれを呼び出すコードがイベントにフックする必要があるため、表面的にはかなり奇妙に見えました (4 つまたは 5 つの異なるイベントがあります!)。
開発者は、この方法でエラー処理コードで割り当てられたリソースのプロパティを参照できること、およびエラー後のクリーンアップの責任はこの層によって保持されることを教えてくれました。
これはある種の意味があります。
代替案は次のようなものかもしれません
resource = AllocateLotsOfMemory();
if (SomeCondition())
{
BigObject temporary = resource.StatusProperty;
resource.FreeLotsOfMemory();
throw new OddException(temporary);
}
私の質問は次のとおりです。
この "
BigObject
" は例外オブジェクトが解放されると解放されるので、このパターンは必要ですか?他の誰かがこのパターンの経験がありますか? もしそうなら、どのような落とし穴を見つけましたか? どのような利点がありますか?
ありがとう!