Я прочитал несколько других вопросов, касающихся методов обработки исключений C #, но, похоже, никто не спрашивает, что я ищу.
Если я реализую собственное исключение для определенного класса или набора классов. Должны ли все ошибки, относящиеся к этим классам, быть инкапсулированы в мое исключение с использованием внутреннего исключения, или я должен позволить им пропасть?
Я подумал, что было бы лучше перехватить все исключения, чтобы исключение можно было немедленно распознать из моего источника. Я все еще передаю исходное исключение как внутреннее исключение. С другой стороны, я подумал, что повторно генерировать исключение было бы излишним.
Исключение:
class FooException : Exception
{
//...
}
Вариант 1: Foo заключает в себе все исключения:
class Foo
{
DoSomething(int param)
{
try
{
if (/*Something Bad*/)
{
//violates business logic etc...
throw new FooException("Reason...");
}
//...
//something that might throw an exception
}
catch (FooException ex)
{
throw;
}
catch (Exception ex)
{
throw new FooException("Inner Exception", ex);
}
}
}
Вариант 2: Foo выдает определенные исключения FooExceptions, но позволяет другим исключениям не выполняться :
class Foo
{
DoSomething(int param)
{
if (/*Something Bad*/)
{
//violates business logic etc...
throw new FooException("Reason...");
}
//...
//something that might throw an exception and not caught
}
}