Я просматривал список предопределенных Исключений в PHP, и я заметил DomainException. Кто-нибудь знает, что означает DomainException? Означает ли это, что проверка достоверности данных не подтверждена?
Когда вы выбросите DomainException в PHP?
Ответ 1
Там довольно веселая дискуссия о том, как никто, кажется, не знает, что значит:
http://bugs.php.net/bug.php?id=47097
С конца этой ссылки:
Домен означает домен данных здесь. То есть a
DomainException
должны быть выброшены когда значение не соответствует определенную действительную область данных. Примеры:
- 0 не входит в область для деления.
- Foo не входит в домен для будних дней.
Первое отличается от и так, но вы можете использовать
InvalidParameter
в случае, если фактически параметр функции который выполняет разделение. Если это значение, вычисленное внутри функции до выполнения подразделения и затем выполняется предварительная проверка вместо выполнения разделения, то он становитсяDomainException
.
Ответ 2
Описание RangeException
является более полезным:
Исключение выбрано для указания ошибок диапазона во время выполнения программы. Обычно это означает, что была арифметическая ошибка, отличная от/переполнения. Это версия времени выполнения DomainException.
Я думаю, что он применим и к неарифметике, например. см. этот комментарий пользователя.
Например, если вы ожидаете, что значение будет в наборе {'jpeg', 'png', 'gif', 'bmp'}
, и вы получите что-то вроде 'foo'
, это хороший кандидат для DomainException (логика)/RangeException
(время выполнения). Я уверен, что вы могли бы подумать о многих других случаях использования.
Кроме того, я просто нашел эту полезную статью, которая дает более подробные объяснения, чем php.net: Как использовать встроенные классы исключений SPL для лучшей обработки ошибок
Ответ 3
Этот вид исключения должен использоваться для информирования о ошибках домена в математическом смысле.
См. домен функции.
Например, функция квадратного корня будет определена только для положительных чисел (если вы не используете сложные номера...)