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");
答案 0 :(得分:12)
ErrorException
主要用于将php错误(由error_reporting引发)转换为Exception
。
您应该避免直接使用太宽的Exception
。使用特定Exception
或使用predefined SPL Exception
要关注您的修改:是展开Exception
而不是ErrorException
。