我正在使用ZF2构建应用程序。 我使用ajax在应用程序上发布一些数据,当我用这行代码抛出一个新的异常时:
throw new \Exception("Not Loged In.", 401);
问题是每次我抛出一个新错误它返回500即使我把任何东西作为异常的第二个参数。
任何人都可以帮助我吗?
谢谢!
答案 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中的:
或在Apache配置的php.ini中,在.htaccess文件中,它是可能的。对于开发人员的工作,您应该显示所有错误。