2015-04-02 45 views
0

這就是這種情況。比方說,我有一個收集名字,姓氏和電子郵件地址的表單,所有字段都是必需的。PHP例外,錯誤和給予用戶反饋

通常情況下,我只是檢查一個字段,如果它沒有設置然後回顯錯誤。這很好,但我想更優雅地處理事情。我一直在閱讀關於throw/try/catch的內容,並且我明白如何使這些工作成功,但我不確定何時應該使用這些工作。

讓我對自己想要做的事情做更具體的描述。

所以,我再次有3個領域:

  • 電子郵件

我把這些領域,並通過驗證程序運行它們。驗證器返回一個數組,其中的字段爲鍵和一個錯誤消息(如果有的話)。我想遍歷數組,並以某種方式將這些錯誤設置爲某種全局錯誤數組。這個數組將被一個控制器讀取,該控制器將準備顯示的錯誤。合理?

我認爲throw/catch/try可以做到這一點,但我一次只能拋出1個錯誤。我想要做的是立即向用戶顯示所有錯誤。

我意識到我可以在這裏基地,但這就是爲什麼我要求諮詢。在這種情況下,最佳做法是什麼?

+0

「我把這些領域......有道理嗎?」 - 整個段落完全有意義。爲什麼不寫代碼並嘗試一下呢? – wavemode 2015-04-03 00:01:21

回答

0

我見過的一個(可能略微極端的)經驗法則是,您應該只使用異常,在那裏您會對程序退出感到滿意。這是其中一個原因,如果你沒有發現異常情況,那將會發生什麼;但它也突出了這樣一種觀點,即不應將例外情況用於「一切照常」,流量控制,情況。如你發現的那樣,只要你拋出一個異常,你就會被拋出你正在做的任何事情,所以你不能同時創建多個異常。所以最好的驗證方法就是建立一系列錯誤 - 它不需要是全局的,只需從驗證方法返回它,或者作爲Validator對象的成員。

接下來發生什麼事情取決於個人風格,部分取決於代碼的結構。您可能只想將它們直接傳遞給模板,只有在沒有可顯示的情況下才繼續。但是你可能會發現這需要在多個地方檢查「返回的錯誤,不要繼續」,在這種情況下,拋出包含在其中的消息的單個異常可能會更有意義,因爲您知道那裏和catch之間沒有代碼會跑。