php - 在这种情况下我应该重新抛出异常吗?

标签 php exception rethrow

这个方法可以吗?我是否正确处理异常?查看我的类(class):

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.');
    }
}
}

最佳答案

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

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

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

关于php - 在这种情况下我应该重新抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4980041/

相关文章:

关于重新抛出原始异常的 C++ 异常问题

error-handling - 从SSIS包中抛出错误

php - 是否可以在 $post->post_content 中获取帖子内容的 Elementor 样式?

python - 异常派生类的 __repr__ 效果不佳

java - 从机器人句柄 awtexception 扩展

javascript - 引发 EvalError 和 InternalError

php - codeigniter - 无法删除或修改数据库

php - 如何配置 Git 以忽略对行尾的更改?

PHPUnit:测试完成后如何从数据库中删除测试数据?

java - 在java中重新抛出不同的捕获异常