我想以某種方式將try catch語句應用於所有Actions以作爲任何未捕獲的異常的逆止器。cakephp - 嘗試/捕捉一個動作
我認爲這對Ajax Actions特別有用,因爲catch語句可以發回一個默認的4xx狀態碼。 Prototype的onFailure()函數然後可以執行客戶端錯誤處理。
我怎麼能做到這一點,而不在蛋糕調度像這樣用一個try/catch包裹行動呼籲:
try {
output = $controller->dispatchMethod($params['action'], $params['pass']);
}
catch {...}
沒有任何人有一個建議,或者不碰調度員獲得這種功能的另一個可行的策略?
人們如何看待將異常處理置於Displatcher中?我想象一下,當php 4支持時,蛋糕會有一個內置的機制。
[編輯]我仔細研究了蛋糕錯誤處理。沒有嘗試/捕獲,似乎在功能上有很大的損失。而且,我不願意混合cakeErrors和其他異常。
更換線
這些都不是像 '失蹤行動' 一般錯誤。它們通常是通過聯繫其他Web服務或與服務器上運行的其他應用程序(即圖像生成器)或緩存引擎一起工作而生成的。它們通常由Action中的異常處理來處理。我只是在尋找一種能夠爲未被捕獲的異常提供一些通用處理的後援。這在我給出的例子中很有用。感謝您的鏈接。我將研究如何使用PHP 4/Cake的方式:ErrorHandler類。謝謝。 – joshs 2010-03-24 15:25:56
啊我看到了,因爲我可以捕獲並處理調用外部服務的操作中的錯誤代碼,然後打開響應代碼並拋出一個錯誤。 – 2010-03-24 16:38:10
最終目標可能是捕獲操作中的所有異常,但最好有一個支持......特別是在beta測試期間。另外,Exceptions的意義在於將意外的案例處理移動到正常案例邏輯之外。我不希望自己的行爲成爲精心設計的異常處理程序......特別是在開發過程中,當不清楚哪些異常實際上會頻繁拋出時。 – joshs 2010-03-24 17:13:33