Если гуид. Пустой результат в ArgumentException или ArgumentOutOfRangeException

Ну, я начал с PHP и недавно углубился в Python. Я бы не сказал, что я «перешел», но я использую и то, и другое (все еще PHP, но также немного Python).

Я бы не сказал, что у меня больше «веселья» с Python. Есть много действительно классных и простых вещей, которые я действительно хотел бы перенести в PHP. Так что, думаю, это можно считать «забавой». Но я все еще наслаждаюсь PHP, так что ...

Я более продуктивен с PHP. Я знаю PHP внутри и снаружи. Я знаю большинство мелких нюансов, связанных с написанием эффективного кода PHP. Я не очень хорошо знаю Python (возможно, я написал 5k строк Python) ... Я знаю достаточно, чтобы делать то, что мне нужно, но не так глубоко, как PHP.

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

Я все еще делаю PHP проекты. Это мой лучший язык. И ИМХО, это лучше, чем Python в некоторых веб-задачах (например, на сайтах с высоким трафиком). PHP имеет встроенный многопоточный слушатель FastCGI. Python вам нужно найти один (есть куча там). Но в моих тестах Python никогда не был в состоянии достичь такой же скорости, как PHP с FastCGI (лучшее, что показал Py, было на 25% медленнее, чем PHP. Наихудшее было несколько раз в зависимости от библиотеки FCGI). Но это основано на моем опыте (который по общему признанию не очень). Я знаю PHP, поэтому мне удобнее размещать на нем большой сайт, чем PY ...

6
задан Mark Seemann 22 June 2009 в 11:38
поделиться

4 ответа

Утверждать, что пустое значение выходит за пределы допустимого диапазона, кажется неправильным. Поскольку Guid.Empty обычно используется, когда нет никакого определенного значения, на самом деле нет никакого значения, которое могло бы выходить за пределы диапазона.

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

Также подумайте, будет ли ApplicationException лучше. Это используется для исключений в приложении, а не в библиотеке классов.

5
ответ дан 8 December 2019 в 18:40
поделиться

Я бы выбросил ArgumentException . В его документах говорится:

Исключение, которое выдается, когда один из аргументов, предоставленных методу, недействителен.

это именно тот сценарий, который вы описываете. Вам нужно что-то вроде:

throw new ArgumentException("Guid.Empty is not a valid id", "id");
7
ответ дан 8 December 2019 в 18:40
поделиться

AE.

0
ответ дан 8 December 2019 в 18:40
поделиться

Вызвать Invalid ArgumentException . Это точно соответствует семантике, которая вам нужна. Вы бы не выбросили ArgumentOutOfRangeException , если ожидаете uint и все значения, кроме 0xffffffff , допустимы, не так ли?

1
ответ дан 8 December 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: