Я работаю над некоторым кодом, который использует шаблон в своей области бизнеса и данных, который использует события для сигнализации ошибок, например.
resource = AllocateLotsOfMemory();
if (SomeCondition())
{
OnOddError(new OddErrorEventArgs(resource.StatusProperty));
resource.FreeLotsOfMemory();
return;
}
Это выглядело поверхностно довольно странно, тем более что код, который вызывает это, должен зацепиться за события (есть четыре или пять разных!).
Разработчик говорит мне, что таким образом они могут ссылаться на свойства выделенного ресурса в коде обработки ошибок и что ответственность за очистку после ошибки сохраняется этим уровнем.
Что делает какой-то смысл.
Альтернативой может быть что-то вроде
resource = AllocateLotsOfMemory();
if (SomeCondition())
{
BigObject temporary = resource.StatusProperty;
resource.FreeLotsOfMemory();
throw new OddException(temporary);
}
Мои вопросы:
-
Поскольку этот "
BigObject
" освобождается при освобождении объекта исключения, нужен ли нам этот шаблон? -
Есть ли у кого-нибудь еще опыт этого шаблона? Если да, то какие подводные камни вы нашли? Какие преимущества существуют?
Спасибо!