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;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值