验证类 - 应该返回false还是抛出异常?

时间:2011-05-25 20:03:18

标签: php

我正在创建一个验证字符串的类。字符串可能无法通过的原因有很多。

抛出异常或返回错误/错误代码会更有意义吗?优点/缺点?

3 个答案:

答案 0 :(得分:8)

验证器不应抛出异常,因为验证器失败不是“异常”事件。

如果代码中的数据不好,其余代码应该抛出异常。

当您运行验证器功能时,您显然已准备好处理通过简单测试检测到的任何问题。将所有内容包装在try / catch块中并仅停止所有执行以尝试恢复是过度杀伤。只需使用if语句,并准备向用户显示一些错误消息。

答案 1 :(得分:3)

返回false
异常是EXCEPTION,只有在特殊情况下才会抛出,当脚本无法继续执行时。

答案 2 :(得分:0)

抛出异常似乎有点极端,因为就字符串验证套件而言,未验证的字符串实际上并不是异常事件。

因此,我认为返回false似乎是最合乎逻辑的解决方案。此外,您还可以通过引用变量传回有意义的文本错误,如果这对您的实现而言是有意义的。

例如:

// In the class definition...
public function validateSTring($stringToValidate, &$errorString=null) {

    // If an error occurs...
    if($errorString) {
        $errorString = 'Something went wrong along the way.';
        return false;
    }     

}


// When calling...

$errorString = '';
$validationSuite->validateString($stringToValidate, $errorString);