【问题标题】:Exception Handling in Zend frameworkZend 框架中的异常处理
【发布时间】:2014-07-11 00:42:34
【问题描述】:

最近我一直在 Zend Framework 中进行开发。在异常处理过程中我陷入了困惑。

谁能告诉我处理异常的最佳位置在哪里?是模型还是控制器?它可能是在性能或可用性或其他方面。

【问题讨论】:

    标签: php zend-framework exception-handling


    【解决方案1】:

    如果我们想捕获各种异常,我们最好让我们的模型抛出异常。你也可以阅读这篇文章link

    【讨论】:

      【解决方案2】:

      您应该在控制器中处理异常,因为有时异常的错误消息应该传递给视图。为了避免模型和视图之间的依赖关系,您应该在控制器中处理异常。

      Zend Framework all ready 通过内置的 errorController 处理异常。您可以通过在配置文件中添加以下行来启用它。

      resources.frontController.throwExceptions = 0
      

      另外,如果你想自己处理异常,而不是在不同的地方处理它们,你可以在一个地方处理它们。如下所示。

      告诉 Zend 框架不要处理异常。在您的 application.ini 中执行此操作

      resources.frontController.throwExceptions = 1
      

      在您的 Bootstrap 类中执行以下操作。

      定义一个自定义方法来处理异常。

      public function __handleExceptions(Exception $e){
              //render a view with a simple error message for the user
              //and send an email with the error to admin
          }
      

      在 Bootstrap 类中覆盖 Zend_Application_Bootstrap_Bootstrap_bootstrap()run() 方法,并捕获在引导过程中或运行应用程序时抛出的异常,并调用您的异常处理程序,如下所示。

      protected function _bootstrap($resource = null)
          {
              try {
                  parent::_bootstrap($resource);
              } catch(Exception $e) {
                  $this->__handleExecptions($e);
              }
          }
      
          public function run()
          {
              try {
                  parent::run();
              } catch(Exception $e) {
                  $this->__handleExecptions($e);
              }
          }
      

      现在您的所有异常都将在一个地方处理。

      【讨论】:

        猜你喜欢
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 2012-06-10
        • 2021-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多