更好的错误处理方式?

时间:2011-05-11 15:54:50

标签: php class error-handling

错误处理的最佳方法是什么?这就是我想出的:

class test {

    public static function Payment($orderid, $total) {
        if (empty($orderid) && empty($total)) {
            return array('status' => 'fail', 'error' => 'Missing Data');
        }
    }

}

我听说过Try / Exceptions但是如何将其融入我的代码中?如果你能提供一个很棒的例子!

6 个答案:

答案 0 :(得分:5)

如果使用PHP 5,则可以处理异常错误:

http://fr2.php.net/manual/en/class.exception.php

这种方式比手动设置异常消息更清晰,因为您可以访问try catch系统并且可以隔离异常处理

答案 1 :(得分:3)

如上所述,使用Exceptions。特定于您的示例,如果某些条件失败,您throw会出现异常。然后,当您调用可以抛出异常的方法时,使用try/catch处理块将其包装起来。

class test {
  public static function Payment( $orderid, $total ) {
    if (empty( $orderid ) && empty( $total )) {
        throw new Exception('Missing Data');
    }
  }
}


try {
  test::Payment("1", "2"); //should be fine
  test::Payment(); //should throw exception
} catch (Exception $e){
  echo $e;
  //do other things if you need 
}

答案 2 :(得分:1)

You could use exceptions

但是,在您发布的用例中,只需在控制器级别进行检查就足够了。

我还认为显式检查数组的返回类型(失败时)是反直觉的。

答案 3 :(得分:1)

以下是修改代码以使用异常的方法。它还有助于记录抛出异常的情况。

class test {

    /**
     * [method description]
     * @throws Exception if the order ID or total is empty
     */
    public static function Payment($orderid, $total) {
        if (empty($orderid) && empty($total)) {
            throw new Exception("fail: Missing Data");
        }
    }

}

如果要在异常中包含额外数据,也可以创建自己的异常类。

class MyException extends Exception{
  public $status, $error;
  public function __construct($status, $error){
    parent::__construct("$status: $error");
    $this->status = $status;
    $this->error = $error;
  }
}

答案 4 :(得分:0)

我倾向于倾向于抛出异常,然后使用try / catch机制来处理善后事宜。手册页位于:http://php.net/manual/en/language.exceptions.php

答案 5 :(得分:0)

最佳做法是使用例外。

http://php.net/manual/en/language.exceptions.php