Бросая АргументNullException - PullRequest
       10

Бросая АргументNullException

56 голосов
/ 15 декабря 2008

Предположим, у меня есть метод, который принимает какой-либо объект в качестве аргумента. Теперь скажите, что если этому методу передан пустой аргумент, это фатальная ошибка, и должно быть выдано исключение. Стоит ли мне кодировать что-то вроде этого (помните, что это тривиальный пример):

void someMethod(SomeClass x)
{
    if (x == null){
        throw new ArgumentNullException("someMethod received a null argument!");
    }

    x.doSomething();
}

Или для меня безопаснее просто полагаться на то, что оно вызывает NullException, когда он вызывает x.doSomething ()?

Во-вторых, предположим, что someMethod является конструктором, и x не будет использоваться, пока не будет вызван другой метод. Должен ли я немедленно сгенерировать исключение или подождать, пока x потребуется, и затем сгенерировать исключение?

Ответы [ 11 ]

0 голосов
/ 05 октября 2010

Я, вероятно, буду за это понижен, но я думаю, что это совсем другое дело.

Как насчет следования хорошей практике под названием "никогда не пропускать ноль" и убрать некрасивую проверку исключения?

Если параметр является объектом, НЕ ПРОЙДИТЕ NULL. Кроме того, НЕ ВОЗВРАЩАЙТЕ НУЛЬ. Вы можете даже использовать шаблон объекта Null, чтобы помочь с этим.

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

Гораздо чище, чем уродливые исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...