Yaf_Exception是Yaf使用的异常类型, 它继承自Exception, 并实现了异常链,其中有一项是:
只有在ap.throw_exception(php.ini)或者ap.throwException(配置文件)开启的情况下, Yaf才会抛出异常, 否则Yaf在出错的时候将trigger_error, 这种情况下, 可以使用Yaf_Dispatcher::setErrorHandler来捕获错误.
但是手册上的例子是有问题代码如下:
<?php
/**
* 一般可放在Bootstrap中定义错误处理函数
*/
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
switch ($errno) {
case YAF_ERR_NOTFOUND_CONTROLLER:
case YAF_ERR_NOTFOUND_MODULE:
case YAF_ERR_NOTFOUND_ACTION:
header("Not Found");
break;
default:
echo "Unknown error type: [$errno] $errstr<br />\n";
break;
}
return true;
}
Yaf_Dispatcher::getInstance()->setErrorHandler("myErrorHandler");
?>
如果这样在Bootstarp.php加入是不正常的会报:
Warning: set_error_handler() expects the argument (myError) to be a valid callback in /home/www/zh.shop/trunk/application/Bootstrap.php on line 30
Catchable fatal error: Yaf_Application::run() [yaf-application.run]: Failed opening controller script /home/www/zh.shop/trunk/application/controllers/Prodfdfduct.html.php: Success in /home/www/zh.shop/trunk/index.php on line 11
修改如下:
Yaf_Dispatcher::getInstance()->setErrorHandler(array($this,"myErrorHandler"));