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块添加到调度员,到那个地方控制器调度方法被调用。

相关问题