这可能是一个 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/