extends LogicException , то его тоже логировать не стоит.
Далее - если же речь идет о несоответствии значений чего-либо ожидаемому, стоит использовать UnexpectedValueException extends RuntimeException
Пример из документации PHP http://php.net/manual/en/class.invalidargumentexception.php - The InvalidArgumentException class. Exception thrown if an argument is not of the expected type.
Если мы ожидаем аргумент одного типа (речь необязательно о встроенном типе данных), а приходит другой - это ошибка логики программы. Мы её по-тихому логируем и исправляем, это не должна быть часть обычного потока выполнения, который мы должны документировать.
http://php.net/manual/en/class.unexpectedvalueexception.php
Exception thrown if a value does not match with a set of values. Typically this happens when a function calls another function and expects the return value to be of a certain type or value not including arithmetic or buffer related errors.
То есть проблема уже не с типом, а со значением. Это рантайм ошибка, её появление является частью логики программы. Логируем, возможно, возвращаем посетителю, документируем в докблоке.
В чем я неправ?
FileNotFound это опять же пример если мы ожидаем аргумент string пришел string но в текущем окружение этого файла нет или прав недостаточно на его чтение это FileNotFoundException ок ненаследуемся мы от InvalidArgumentException то в каких случаях он будет вообще вылетать ? https://3v4l.org/Jrv78 тут TypeError а не InvalidArgumentException, в каком случае по вашим словам должен возникать InvalidArgumentException ? "это не должна быть часть обычного потока выполнения" исключение это как раз таки способ сообщить что то внезапно не так и мы не знаем как с этим поступить, а вот как обрабатывать каждое исключение вопрос открытый и сильно зависит от конкретной ситуации
Обсуждают сегодня