CakePHP错误处理

CakePHP错误处理,cakephp,error-handling,cakephp-1.3,Cakephp,Error Handling,Cakephp 1.3,我正在使用cakephp,我正在处理错误 我必须跟上 我已经创建了AppError我的代码是 app/app_error.php <?php class AppError extends ErrorHandler { function error404() { //$this->controller->set('file', $params['file']); $this->_outputMes

我正在使用cakephp,我正在处理错误

我必须跟上

我已经创建了AppError我的代码是

app/app_error.php

<?php

    class AppError extends ErrorHandler {


        function error404() {
            //$this->controller->set('file', $params['file']);
            $this->_outputMessage('error404');
        }

    }
    ?>
但我发现了埃罗 致命错误:在第318行的D:\wamp\www\survey\app\Controller\UsersController.php中调用未定义的方法UsersController::cakeError


我错过了一些东西?

根据错误消息中返回的文件夹路径判断,看起来您使用的是CakePHP 2,而您的文档和示例是CakePHP 1.3

认真阅读2.0书中的内容,有大量的异常可用,我认为这稍微复杂一点,但更加灵活

对于CakePHP 2.X,Object::cakeError已被删除。取而代之的是一些例外情况。以前称为cakeError的所有核心类现在都抛出异常。这使您可以选择处理应用程序代码中的错误,或者让内置异常处理来处理这些错误

CakePHP2.0中对错误和异常处理的控制比以往任何时候都多。您可以使用configure配置要设置为默认错误处理程序和异常处理程序的方法


这里是的链接。您可以轻松实现所需的相同功能。

我认为您正在使用CakePHP 1.3并扩展此处定义的ErrorHandler:

....\cake\libs\error.php
根据本标准,404定义为:

function error404($params) {
    extract($params, EXTR_OVERWRITE);

    if (!isset($url)) {
        $url = $this->controller->here;
    }
    $url = Router::normalize($url);
    $this->controller->header("HTTP/1.0 404 Not Found");
    $this->controller->set(array(
        'code' => '404',
        'name' => __('Not Found', true),
        'message' => h($url),
        'base' => $this->controller->base
    ));
    $this->_outputMessage('error404');
}
在..../app/app_error.php中,您将其定义为

function error404() {
        //$this->controller->set('file', $params['file']);
        $this->_outputMessage('error404');
}
在php中,这种类型的方法重载是不允许的。我想你已经得到了答案

您可以做的是,您可以在扩展的AppError类中创建自己的函数,然后像这样传递错误名称或模板名称

function customeError($errorMessage){
     $this->_outputMessage($errorMessage);
} 
然后根据不同的模板名称,您可以在_outputMessage函数中设置条件,并将用户重定向到不同的页面

function customeError($errorMessage){
     $this->_outputMessage($errorMessage);
}