它可能在Silex中使用基于抛出异常的错误处理程序吗?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);
});
问题是,当我在我的控制器抛出一个ResourceNotFound例外,绑存取遭拒的的ErrorHandler执行
Catchable fatal error: Argument 1 passed to {closure}() must be an instance of App\Rest\Exception\AccessDenied, instance of App\Rest\Exception\ResourceNotFound given
是这个实现在另一种方式,或者我应该只是在处理与泛型异常的处理程序中的所有东西,并打开抛出的异常类型?
PS:我知道了$app->abort()
方法,但喜欢与例外
嘿伊戈尔,非常感谢,我其实只是把建议的邮件列表,可以请你检查它,并给一些反馈,那么我会完成它并发送拉请求。 – ChrisR 2012-03-26 12:41:25
是的,这是个好主意。 – Meglio 2012-04-26 21:48:58
我已经更新了我的答案,因为此功能现在可在silex核心中使用。 :) – igorw 2013-04-04 13:36:17