У меня есть вопрос об обработке исключений избыточно в вызывающем методе и вызванном методе. Рассмотрим следующий пример:Рекомендации по обработке исключений в C#
protected void method1(string action)
{
if (string.IsNullOrWhiteSpace(action))
{
throw new ArgumentException("action cannot be null or empty or white space.");
}
//do something
}
public void method2(string name, string action)
{
if (string.IsNullOrWhiteSpace(name))
{
throw new ArgumentException("name cannot be null or empty or whitespace.");
}
method1(action);
//do something
}
В приведенном выше примере следует также проверить, чтобы действие было null в методе2? Я чувствую, что, поскольку он обрабатывается в методе 1, мне не нужно иметь дело с ним, так как это может привести к избыточному коду.
Любые предложения будут полезны при изучении передовых методов обработки исключений. Спасибо
Возможно, нужно закрыть как основанную на мнениях, но я бы сказал, что если единственный метод, который ломается, если 'action' равен null, является' method1', тогда _that_ - это место, где должно быть возбуждено исключение. Я бы не стал считать это «неправильным», если «method2» также не проверял это. –
Зависит от того, является ли 'method1'' private' или 'public', поэтому, если' method2' является общедоступным методом ввода, он может служить в качестве метода предварительной проверки для private 'method1'. Nitpick: вы проверяете «IsNullOrWhiteSpace», но сообщение об ошибке «действие не может быть пустым». –
см. Здесь https://msdn.microsoft.com/en-us/library/seyhszts(v=vs.100).aspx также поиск в google вы найдете много ресурсов – Mostafiz