cakephp - 尝试/捕捉动作

时间:2010-03-24 04:47:47

标签: cakephp

我想以某种方式将try catch语句应用于所有Actions作为任何未捕获异常的后备。

我认为这对Ajax Actions特别有用,因为catch语句可以发送回默认的4xx状态代码。然后Prototype的onFailure()函数可以进行客户端错误处理。

如果没有在蛋糕调度程序中使用try / catch包装Action调用,我怎么能这样做:

try {
    output = $controller->dispatchMethod($params['action'], $params['pass']);
}
catch {...}

是否有人在没有联系调度员的情况下获得此功能的建议或其他可行策略?

人们如何将异常处理放在Displatcher中?我想当蛋糕掉落php 4支持时,会有一个内置的机制。

[编辑]我调查了蛋糕错误处理。没有try / catch,似乎功能上有很大的损失。而且,我对混合cakeErrors和其他例外犹豫不决。

2 个答案:

答案 0 :(得分:1)

我不太清楚你为什么要这样做。您可以使用

检查参数以查看它是否是控制器中的ajax调用
if($this->params['requested'])

我不知道您的应用程序可能会创建什么类型的异常,但如果它是缺少的操作,视图或类似的,Cake将输出一个错误页面,您可以在app / views / errors文件夹中自定义。

本书提供了一些有关如何使用CakePHP的内置错误处理程序处理错误的信息,http://book.cakephp.org/2.0/en/development/errors.html

你也可以在Google上找到有关创建自己的自定义错误处理程序或扩展内置错误处理程序的文章和教程,以便它从调度核心的try {} catch {}中包装所有调度调用周期。

答案 1 :(得分:1)

在app / webroot / index.php中替换

$Dispatcher->dispatch($url);

try {
    $Dispatcher->dispatch($url);    
} catch(Exception $e) {
    // do exception handling
}