Когда использовать ErrorException vs Exception?

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 .