3

这种方法可以吗?我是否正确处理异常?看我的课:

class Email extends String
{
protected function validate($email)
{
    try{
        parent::validate($email);
    } catch(InvalidArgumentException $e) {
        throw $e;
    }

    if(!filter_var($value,FILTER_VALIDATE_EMAIL))
    {
        throw new InvalidArgumentException('etc.');
    }
}
}
4

1 回答 1

11

如果您不打算对该 catch 块中的异常执行任何操作,则无需将该父方法调用包含在其自己的 try-catch 块中。如果该方法在 try-catch 块之外遇到异常,该方法将自动从父实现的异常向上传递,就像您从同一上下文中抛出异常一样(就像您在 if 条件之后所做的那样):

protected function validate($email)
{
    parent::validate($email);

    if (!filter_var($value, FILTER_VALIDATE_EMAIL))
    {
        throw new InvalidArgumentException('etc.');
    }
}
于 2011-02-12T19:15:55.237 回答