如何启用/禁用类的异常处理

时间:2015-03-15 12:42:06

标签: php oop exception error-handling exception-handling

我有一个处理异常错误的类,比如

class fooException extends Exception{}

class foo {

  public function bar($x){
    if(!$x){
        throw new fooException ("x can not be false value");
     }
  }

}

现在,我正在尝试做的是允许类的用户做出是否应该抛出异常的选择,或者不像PDO类那样。

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION

所以,我要为课程提供灵活性,不要一直抛出异常。

1 个答案:

答案 0 :(得分:1)

您可以更好地扩展例外

class MyException extends Exception 
{
    static public $enable = true;
    public function __construct($message = null, $code = 0)
    {       
        if (self::$enable) {
            parent::__construct($message, $code);
        }
    }

}

你可以打电话

throw new MyException("x can not be false value");
MyException::enable = false; //for disable

注意这是非常基本的实现,你有办法以某种方式处理错误状态。

另一个更好的解决方案是使用ExceptionHandler

class ExceptionHanlder
{
    static public $enable = true;
    function __construct($message = null,$code = null) {
        if (self::$enable) {
            throw new Exception($message,$code);
        }
    }

}
ExceptionHandler::$enable = false;
new ExceptionHandler('test');