Мне интересно, какой правильный путь - передать исключение из одного метода в другой.
Я работаю над проектом, который разделен на слои Presentation (web), Business и Logic, а ошибки (например, SqlExceptions) должны передаваться по цепочке, чтобы уведомить веб-слой, когда что-то пойдет не так.
Я видел 3 основных подхода:
try
{
//error code
}
catch (Exception ex)
{
throw ex;
}
(просто ретрол)
try
{
//error code
}
catch (Exception ex)
{
throw new MyCustomException();
}
(создайте собственное исключение, так что зависимость от поставщика данных не передается)
а затем просто
//error code
(ничего не делать вообще, позволяя ошибке выходить из строя)
Естественно, что в блоке catch также происходит некоторая запись.
Я предпочитаю номер 3, а мой коллега использует метод 1, но ни один из нас не может действительно мотивировать почему.
Каковы преимущества/недостатки использования каждого метода? Есть ли лучший способ, о котором я не знаю? Есть ли наилучший способ?