1

我目前正在研究實現前端控制器模式的MVC應用程序。使用set_exception_handler處理應用程序中的錯誤

的過程是這樣的:當接收

  1. 要求
  2. 請求被變成了RequestObject
  3. RequestObject傳遞給調度員
  4. 調度隨後的路線,然後調用所需的控制器。
  5. 控制器將結果返回給ResponseObject。
  6. 然後分派器將ResponseObject返回給應用程序的「Front」。
  7. 輸出被回顯出來。

有一個特殊的情況下(AJAX和閃光前端):

  1. 調度器將看到該請求被髮送到「端點」控制器。
  2. 端點控制器然後如上所述將請求分派給實際請求的控制器。
  3. requestObject然後返回給端點控制器。
  4. 終端控制器然後執行其JSON或AMF編碼,這是回聲。
  5. 該腳本隨後終止於exit();

我創建了一個ExceptionHandler班,並使用set_exception_handler進行了註冊。同時我創建了一個ErrorHandler並使用set_error_handler,然後轉換所有錯誤並將其作爲例外拋出。

所有這一切都很好。然而,當我遇到這個問題時,ExceptionHandler就會遇到這些例外之一。在ExceptionHandler中,ResponseObject被修改以反映我們需要拋出500錯誤的事實。

我想以某種方式從ExceptionHandler返回ResponseObject,以便返回的ResponseObject可以被調度程序「捕獲」,然後通過「端點」控制器或「前」控制器呈現或轉換爲JSON或AMF響應。

這可能嗎?如果是這樣,那麼做到這一點的最好方法是什麼?

回答

0

這是不可能的。如上所述http://php.net/set_exception_handler

調用exception_handler後執行將停止。

正確的方法是try-catch塊添加到調度員,到那個地方控制器調度方法被調用。

相關問題