Я прочитал несколько других вопросов, касающихся практики обработки исключений в 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 выбрасывает определенные исключения FooException, но позволяет другим исключениям проходить через:
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
}
}