Я прочитал несколько других вопросов, касающихся практики обработки исключений С#, но никто, кажется, не спрашивает, что я ищу.
Если я реализую собственное собственное исключение для определенного класса или набора классов. Должны ли все ошибки, относящиеся к этим классам, инкапсулироваться в мое исключение, используя внутреннее исключение, или я должен позволить им провалиться?
Я думал, что было бы лучше поймать все исключения, чтобы исключение можно было сразу узнать из моего источника. Я все еще передаю исходное исключение как внутреннее исключение. С другой стороны, я думал, что было бы лишним отказаться от исключения.
Исключение:
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
}
}