首页 > 代码库 > Yaf如何自定义抛出异常catchException
Yaf如何自定义抛出异常catchException
Yaf的抛出分为错误级别和异常级别,我这里速记的是如何自定义异常捕获已经处理
系统默认的抛出通常会暴露你的文件结构以及命名方式,在系统面向公网的时候,我们有必要对这些做出屏蔽或者处理
define("APP_PATH", __DIR__); $app = new Yaf_Application(APP_PATH . "/conf/application.ini"); $app->getDispatcher()->catchException(true); $app->bootstrap()->run();
这样设置也是可以的,至于效率哪个更好,我不是很清楚,懂的童靴麻烦告诉一下
Yaf_Dispatcher::getInstance()->catchException(true);
设置catchException为true,可以自定义捕获
捕获处理比较简单
在当前module下面创建一个Error的Controller下面创建一个errorAction
class ErrorController extends Yaf_Controller_Abstract { public function errorAction($exception) { Yaf_Dispatcher::getInstance()->disableView(); /* error occurs */ switch ($exception->getCode()) { case YAF_ERR_NOTFOUND_MODULE: case YAF_ERR_NOTFOUND_CONTROLLER: case YAF_ERR_NOTFOUND_ACTION: case YAF_ERR_NOTFOUND_VIEW: echo 404, ":", $exception->getMessage(); break; default : $message = $exception->getMessage(); echo 0, ":", $exception->getMessage(); break; } } }
$app->getDispatcher()->throwException(FALSE); $app->getDispatcher()->setErrorHandler("myErrorHandler"); $app->bootstrap()->run(); 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 'errno: '.$errno.'<br>'; echo 'errstr: '.str_replace(APP_PATH, '[PATH]', $errstr).'<br>'; echo 'errfile: '.str_replace(APP_PATH, '[PATH]', $errfile).'<br>'; echo 'errline: '.$errline.'<br>'; break; } return true; }
Yaf如何自定义抛出异常catchException
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。