Fed*_*kun 4 php exception-handling symfony silex
我正在用Silex构建一个小应用程序.它分为REST应用程序和网站.(两个控制器,相同的应用程序).该网站已经安装了自己的自定义错误处理程序,它返回一个用户友好的html页面.问题是在部分专用REST应用程序中,我应该以某种方式处理异常以返回类型[json]和与错误处理程序的自定义网站不同的内容.
这个参数也可以应用于Symfony2,我想也可以解决它!
将方法包装在try-catch块中,以便将异常重新抛出到处理程序中.
$app->get('/api/show-list', function() use($app){
try {
$show = // db query, etc.
return $app->json(array('show' => $show), 200);
} catch (Exception $e) {
throw new MyException;
}
});
$app->error(function (MyException $e, $code) {
// error api
});
Run Code Online (Sandbox Code Playgroud)
问题是如果从我的控制器中抛出异常,将使用默认的错误处理程序.一些技巧?和Symfony?
小智 9
我一直在我的Silex RESTful应用程序中使用以下命令以json格式返回错误:
$app->error(function (\Exception $e, $code) use($app) {
return $app->json(array("error" => $e->getMessage()),$code);
});
Run Code Online (Sandbox Code Playgroud)
不确定这是否正确,但它对我有用.
这在Silex网站上有记录:http: //silex.sensiolabs.org/doc/usage.html#error-handlers
在 Symfony2 上你可以使用 ExceptionHandler。在异常上,您有堆栈跟踪,因此您可以识别抛出异常的位置。
此外,在 Symfony2 中您可以根据预期的格式进行自定义。它的文档中有很好的解释。
例如,如果您将 ExceptionController 替换为您的 ExceptionController 之一,则第三个参数将显示预期的格式:
有关在何处更改 ExceptionController 的参考
| 归档时间: |
|
| 查看次数: |
2459 次 |
| 最近记录: |