這可能是一個不錯的問題,但無論如何。可以使用異常進行表單驗證嗎?假設我有一個詢問用戶姓名和電子郵件的表單,是否有權進行以下操作?應該使用異常來進行表單驗證嗎?
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