在Silex中可以根据抛出的异常使用错误处理程序吗?
我知道这可以通过一个异常处理程序和抛出异常的类名上的switch语句来实现,但对我而言,似乎"Silex方式"更清晰,但不起作用.
这就是我期望它的工作方式
<?php
// Handle access denied errors
$app->error(function (\App\Rest\Exception\AccessDenied $e) {
$message = $e->getMessage() ?: 'Access denied!';
return new Response($message, 403);
});
// Handle Resource not found errors
$app->error(function (\App\Rest\Exception\ResourceNotFound $e) {
$message = $e->getMessage() ?: 'Resource not found!';
return new Response($message, 404);
});
// Handle other exception as 500 errors
$app->error(function (\Exception $e, $code) {
return new Response($e->getMessage(), $code);
});
Run Code Online (Sandbox Code Playgroud)
问题是当我在控制器中抛出ResourceNotFound异常时,会执行绑定到AccessDenied的错误处理程序
可捕获的致命错误:传递给{closure}()的参数1必须是App\Rest\Exception\AccessDenied的实例,给出App\Rest\Exception\ResourceNotFound的实例
这是以另一种方式实现的,还是应该只是处理与通用异常一起使用的处理程序中的所有内容并切换抛出的异常类型?
PS:我知道这个$app->abort()方法,但更喜欢使用异常
| 归档时间: |
|
| 查看次数: |
4850 次 |
| 最近记录: |