每个控制器的不同异常cakephp

每个控制器的不同异常cakephp,php,cakephp,Php,Cakephp,我想用cakephp为项目中的每个控制器创建异常。例如: class UsersController extends AppController { public function add(){ if(!$this->User->save($this->request->data)){ throw new UserException('Error save User/add'); } } }

我想用cakephp为项目中的每个控制器创建异常。例如:

class UsersController extends AppController {

    public function add(){

        if(!$this->User->save($this->request->data)){
            throw new UserException('Error save User/add'); 
        }

    }

}

class FriendsController extends AppController {

    public function add(){

        if(!$this->Friend->save($this->request->data)){
            throw new FriendException('Error save Friend/add');
        }

    }

}
我正在尝试,但不起作用…永远不要绘制登录类异常用户/朋友

在app/Config/core.php中

Configure::write('Exception.handler', 'UserException::handle');
Configure::write('Exception.handler', 'FriendException::handle');
在app/Config/bootstrap.php中

App::uses('UserException', 'Lib');
App::uses('FriendException', 'Lib');
在app/Lib/UserException.php中

class UserException {
    public static function handle($error) {
        $this->log($error)
    }
}
class FriendException {
    public static function handle($error) {
        $this->log($error)
    }
}
在app/Lib/FriendException.php中

class UserException {
    public static function handle($error) {
        $this->log($error)
    }
}
class FriendException {
    public static function handle($error) {
        $this->log($error)
    }
}
有什么想法吗?
问候

每个控制器的例外情况似乎都是多余的。当UserException和FriendException相同时,为什么需要两个异常类,唯一的区别是传递的消息?此外,日志功能内置于core的ExceptionHandler中。您只需抛出带有所需消息的CakeException或RuntimeException

您是否了解您的代码:

Configure::write('Exception.handler', 'UserException::handle');
Configure::write('Exception.handler', 'FriendException::handle');
覆盖配置变量是否相同


无论如何,“Exception.handler”配置旨在指定处理所有异常的类。可以将异常类与错误处理程序类混淆。异常类没有任何句柄方法。您的异常类应该扩展CakeException并重写所需的方法/属性。

使用,它附带了一个可配置的,并且可以根据错误级别发送电子邮件。

为什么不使用try-catch。?在每个函数中?我都做到了。但我想在发生错误时发送和发送电子邮件。在日志中始终:致命错误1:在新的日志中找不到类“UserException”,我只有一个异常。在我的控制器中,我放入:抛出新的AppExceptionHandler'Exception error';但是日志显示:类'AppExceptionHandler'未找到您仍然不理解异常和异常处理程序之间的区别。您应该抛出异常类实例,而不是异常处理程序类实例。