这可能是一个不错的问题,但无论如何。可以使用异常进行表单验证吗?假设我有一个询问用户姓名和电子邮件的表单,是否有权进行以下操作?应该使用异常来进行表单验证吗?
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
}
而且 - 如果这实际上是在做它 - 正确的方式,如果用户提交都空名称和无效的电子邮件,将两个例外的执行或仅首先出现的一个(在这种情况下名字一)?
顺便说一句,我使用的是PHP。
这绝对是一种使用异常的奇怪方式。 “会执行这两个例外还是只执行第一个出现的例外” - 难以写出5行代码并查看自己吗? – zerkms 2012-04-02 02:24:15
只有第一个会被抛出并被抓住,其他人会被跳过。如果您需要累积错误消息,则最好使用普通的旧if/else链并将消息附加到数组上。 – 2012-04-02 02:24:39
@Michael我认为是这样的......它似乎是一个很好的使用例外(虽然无效的输入应该被视为_exceptional_),但我会坚持if/else的 – federicot 2012-04-02 02:28:00