ZF2 PHP异常

时间:2017-03-11 03:15:26

标签: php exception zend-framework2

我正在使用ZF2构建应用程序。 我使用ajax在应用程序上发布一些数据,当我用这行代码抛出一个新的异常时:

throw new \Exception("Not Loged In.", 401);

问题是每次我抛出一个新错误它返回500即使我把任何东西作为异常的第二个参数。

任何人都可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

从zend框架的请求生命周期角度来看,每个未捕获的异常都是应用程序错误。在框架将它们转换为HTTP 50X之前,您需要一种机制将该异常转换为有意义的HTTP响应。

例如,在您的控制器中,您可以尝试以下内容:

try {
    $this->myService->tryToDoSomethingThatNeedsAuthentication();
} catch(AuthRequiredException $e) {
    $this->getResponse()->setStatusCode($e->getCode()) // Assuming its 401
         ->setReasonPhrase($e->getMessage());
    return;
} catch(\Exception) {
    // handle other exceptions here
}

答案 1 :(得分:0)

问题在于你的php配置。默认Apache(或其他服务器)隐藏内部错误的详细信息,因此返回简短信息:

  

错误500 - 内部服务器错误

您必须启用error_reporting:

  PHP中的

     

http://php.net/manual/pl/function.error-reporting.php

或在Apache配置的php.ini中,在.htaccess文件中,它是可能的。对于开发人员的工作,您应该显示所有错误。