php - 异常应该用于表单验证吗?

标签 php exception exception-handling validation

这可能是一个 n00bish 问题,但无论如何。可以使用异常进行表单验证吗?假设我有一个表单要求用户提供他们的姓名和电子邮件,执行以下操作是否正确?

try {
    if (empty($_POST["name"])) {
        throw new UserRegistrationException("Your name cannot be empty.");
    }

    if (filter_var($_POST["email"])) {
        throw new UserRegistrationException("Invalid email");
    }

    // Save new user into database
} catch (UserRegistrationException $e) {
    // Show errors on screen
}

此外 - 如果这实际上是正确的方法 - 如果用户提交两者 一个空名称和一个无效的电子邮件,那么这两个异常都会执行还是只执行第一个出现的异常(在这种情况下是名字 one)?

我正在使用 PHP顺便说一下。

最佳答案

我个人喜欢对任何应该停止或改变程序流程的事情使用异常。换句话说,如果对特定字段的验证改变了数据的处理方式,或者需要重复该过程,那么我总是使用异常来处理错误。

如果它是微不足道的,或者我只是在编译错误消息列表,那么我不会触发异常。

回答问题,不能同时抛出两个异常。到达的第一个 throw 语句将被抛出。这并不是说有时作为另一种类型的异常重新抛出没有意义。

关于php - 异常应该用于表单验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9970203/

相关文章:

php - MySQL错误代码分类

PHP 尝试使用 preg_match 和 preg_replace 分配 127 TB 的内存和内存泄漏

php - 在 Symfony 3.1.1 表单的输入文本字段中添加掩码

php - Symfony 3,DI - 将服务添加到参数

php - 多行自动计算和复选框?如何减少呢?

android - 对于团队来说,最好的 Android 日志策略是什么?

c# - 使用包含方法的自定义 FaultException 类型

c++ - 可以抛出具有私有(private)拷贝构造函数的对象吗?

c# - 如何避免在 C# 中出现不可能的 bool 状态?

javascript - 在外部脚本文件中捕获 javascript 错误