PHP 5.1 ввел ErrorException . Конструктор двух функций отличается
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] ) public __construct ([ string $message = "" [, int $code = 0 [, int $severity = 1 [, string $filename = __FILE__ [, int $lineno = __LINE__ [, Exception $previous = NULL ]]]]]] )
Есть ли разница, когда использовать?
Я подозреваю, что приведенный выше вариант использования неверен:
<?php class Data { public function save () { try { // do something } catch (\PDOException $e) { if ($e->getCode() == '23000') { throw new Data_Exception('Foo Bar', $e); } throw $e } } } class Data_Exception extends ErrorException /* This should not be using ErrorException */ {}
Он не документирован хорошо, но, похоже, что ErrorException
предназначен для использования явно из пользовательского обработчика ошибок, как в исходном примере, http://php.net/manual/en/class.errorexception.php .
function exception_error_handler($errno, $errstr, $errfile, $errline ) { throw new ErrorException($errstr, $errno, 0, $errfile, $errline); } set_error_handler("exception_error_handler");
ErrorException
в основном используется для преобразования php-ошибки ( ErrorException
error_reporting ) в Exception
.
Вам следует избегать использования слишком большого Exception
. Подкласс с конкретным Exception
или использование предопределенного исключения SPL
Чтобы выполнить ваше редактирование: Да расширяет Exception
а не ErrorException
.