Создание пользовательского класса утверждения

StackOverflow https://stackoverflow.com/questions/8373822

  •  27-10-2019
  •  | 
  •  

Вопрос

Я следую Потерпеть неудачу быстро главный. Мне интересно, хорошей практикой является урок утверждения, чтобы проверить мои аргументы Paramater.

Например:

public static class Assertions
{
    public static void ParamterIsNotNull(object subject, string paramName = "")
    {
        if (subject == null) throw new ArgumentNullException(paramName, "Paramter cannot be null");
    }
}

и в использовании:

public class Test
{
    public Test(object obj)
    {
        Assertions.ParamterIsNotNull(obj, "obj");
    }
}

Это хорошая практика, чтобы разгрузить исключение, бросающее в другой класс, или лучше бросить исключение непосредственно в конструктор?

Это было полезно?

Решение

Из того, что я прочитал (в конце статьи) Мартин говорит, что хорошо делать обе вещи - быстро не терпится, предоставляя значимое исключение и «медленный сбой» - давая пользователю страсть, скажем, контакт и продолжать с Задачи, которые могут быть выполнены успешно независимо от исключения.

Пример пакетной системы был очень хорошим в этом случае - хотя 1 пункт из партии может быть фамилией, пользователь, скорее всего, захочет, чтобы остальные были богаты, поэтому вы бросаете исключение, которое поймало глобальный обработчик (Global Хэндлер решает продолжить со следующим элементом и объединяет ошибку, чтобы показать ее пользователю и отправить уведомление команде DEV).

Таким образом, оба завершены - большинство пользователей выполняются, и принцип быстрого сбоя также уволен.

Таким образом, это зависит от вашего конкретного случая - возможно, если ваш класс участвует в других операциях, будет больше глобального класса (или класса вызывающих абонентов), который сможет лучше решить, может ли он продолжаться или нет.

С другой стороны - ваш класс не должен определить, может ли какая -то другая работа выполнить какую -то другую работу в случае сбоя, поэтому вам нужно бросить свое исключение в конструктор, да. Это то, что я думаю - да :). Поэтому, если ваш класс представляет собой элемент партии - вызывающий абонент, скорее всего, поймает исключение и продолжит. Если это какой -то класс точек входа - тогда вы, вероятно, хотите изящно обработать исключение (или не бросить его вообще), показать пользователю сообщение об ошибке и предоставить подробности (журнал), чтобы команда разработчика была в состоянии рассказать Eastilly Tell Где была проблема.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top