Yaf_Exception是Yaf使用的異常類型, 它繼承自Exception, 並實現了異常鏈,其中有一項是: php
只有在ap.throw_exception(php.ini)或者ap.throwException(配置文件)開啓的狀況下, Yaf纔會拋出異常, 不然Yaf在出錯的時候將trigger_error, 這種狀況下, 可使用Yaf_Dispatcher::setErrorHandler來捕獲錯誤. html
可是手冊上的例子是有問題代碼以下: app
<?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 this
修改以下: spa
Yaf_Dispatcher::getInstance()->setErrorHandler(array($this,"myErrorHandler"));
code