Когда бы вы бросили DomainException в PHP? - PullRequest
21 голосов
/ 09 июля 2009

Я просматривал список предопределенных исключений в PHP и заметил DomainException . Кто-нибудь знает, что означает DomainException? Означает ли это неудачную проверку модели данных?

Ответы [ 3 ]

21 голосов
/ 09 июля 2009

Здесь идет довольно веселая дискуссия о том, что никто, кажется, не знает, что такое:

http://bugs.php.net/bug.php?id=47097

С конца этой ссылки:

Домен означает домен данных здесь. То есть DomainException должен быть брошен всякий раз, когда значение не соответствует определен действительный домен данных. Примеры:

  • 0 не находится в домене для деления.
  • Foo не находится в домене по рабочим дням.

Первый отличается от диапазон и так, но вы могли бы использовать InvalidParameter в случае, если это на самом деле параметр функции который выполняет разделение. Если это значение, рассчитанное внутри функции до выполнения деления и затем проверочные броски перед состоянием вместо того, чтобы выполнить разделение, тогда он становится DomainException.

5 голосов
/ 06 июня 2014

Описание RangeException немного более полезно:

Исключение выдается, чтобы указать ошибки диапазона во время выполнения программы. Обычно это означает, что произошла арифметическая ошибка, отличная от under / overflow. Это исполняемая версия DomainException .

Я думаю, что это применимо и к не арифметике, например см. комментарий пользователя .

Например, если вы ожидаете, что значение будет в наборе {'jpeg', 'png', 'gif', 'bmp'} и вы получите что-то еще, например 'foo', это хороший кандидат на DomainException (логика) / RangeException (время выполнения). Я уверен, что вы могли бы подумать о многих других случаях использования.


Кроме того, я только что нашел эту полезную статью, которая дает более подробные объяснения, чем php.net: Как использовать встроенные классы исключений SPL для лучшей обработки ошибок

3 голосов
/ 09 июля 2009

Такое исключение следует использовать для информирования об ошибках домена в математическом смысле.

См. домен функции .

Например, функция квадратного корня будет определяться только для положительных чисел (если вы не используете комплексные числа ...)

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