Мой технический руководитель настаивает на этом механизме исключений:
try
{
DoSth();
}
catch (OurException)
{
throw;
}
catch (Exception ex)
{
Util.Log(ex.Message, "1242"); // 1242 is unique to this catch block
throw new OurException(ex);
}
1242 - это идентификатор метода catch, который обрабатывает исключение, отличное от OurException. Каждый блок catch в проекте должен иметь уникальный идентификатор, чтобы мы могли знать, где произошло исключение, просматривая журналы.
Для каждого метода мы должны перехватить исключение OurException и выбросить его. Если выдается исключение другого типа, мы должны зарегистрировать его и замаскировать его с помощью OurException, прежде чем выбросить его.
Это разумный подход? Если таковые имеются, каковы лучшие альтернативы?
Редактировать: Мне сказали, что трассировка стека не дает значимых результатов в режиме выпуска.
Вы предлагаете ловить и выдавать общие исключения - это нормально?
Edit2: Спасибо всем. Я использовал ваши ответы как часть моего аргумента против этого, но мне сказали, что вы недостаточно опытны и не знаете, как справляться с реальными жизненными ситуациями. Я должен идти этим путем.