我正在创建一个验证字符串的类。字符串可能无法通过的原因有很多。
抛出异常或返回错误/错误代码会更有意义吗?优点/缺点?
答案 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);