Intereting Posts

Когда вы выбросите DomainException в PHP?

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

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

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

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

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

  • 0 не находится в области деления.
  • Foo не входит в домен для будних дней.

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

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

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

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

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

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

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

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

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