Cakephp:如果缺少操作,如何处理异常

时间:2015-03-07 11:25:23

标签: php exception-handling cakephp-2.0 cakephp-2.3

我正在开发Cakephp中的Api。如果android app调用错误的函数或错误的控制器,我需要处理异常。我需要知道如何处理它并将json中的响应返回到我的Android应用程序。我的意思是我知道我可以在我的beforefilter函数中写一些东西,因为这个函数会先执行但是我不知道如何首先捕获异常或者如何检测事件。通过谷歌搜索我找到了一些解决方案,但它仍然无法正常工作。以下是我尝试过的代码。

应用/ LIB / AppErrorHandler.php     

 class AppErrorHandler extends ExceptionRenderer{
  public static function handleException($error) {
        if ($error instanceof MissingActionException) {

          echo "incorrect controller action name";
            exit;
        }
    }
}
?>

在bootstrap.php中

App::uses('AppErrorHandler', 'Lib');

我的Api中没有做任何关于异常的事情。如果我必须在Api课程中编写一些代码,请告诉我

1 个答案:

答案 0 :(得分:0)

您正在为自定义ExceptionHandler扩展ExceptionRenderer,这是正确的方法。现在您尝试覆盖方法 handleException ,它基本上不存在于baseClass中。所以这样做错了..

现在为您的解决方案: 您需要覆盖ExceptionRenderer类中的函数render()。你的方式如下:

class AppErrorHandler extends ExceptionRenderer{
    public function render() {       
        if ($this->method) {            
            if($this->error instanceof MissingActionException) {
                // echo here whatever you want..
            }
            call_user_func_array(array($this, $this->method), array($this->error));    
            // this line is required to render the normal page as per the error code.. 400 or 500 or similar..
        }
    }
}
lib / Cake / Error中的

P.S:您将找到处理默认异常的文件。在exceptions.php中,您将找到抛出或抛出的不同错误。