我正在Silex申请。
在我的代码的某个地方,我throw new OrderNotFoundException($message, 404);
因此$app->error
中的index.php
会抓住这个。
我按照以下方式实现了这个:
$app->error( function ( \Exception $e, $code ) use ( $app ) {
$messages = [ ];
switch ($code) {
case 401:
$messages[ 'message' ] = 'unauthorized';
break;
case 404:
if($e instanceof OrderNotFoundException){
$messages[ 'message' ] = 'no_order_found';
} else {
$messages[ 'message' ] = 'page_not_found';
}
break;
case 409:
if($e instanceof MultipleOrderException){
$messages[ 'message' ] = 'multiple_orders';
}
break;
default:
$messages[ 'message' ] = 'unknown_error';
}
return $app[ 'twig' ]->render( 'home.twig', $messages );
} );
但我一直得到'unknown_error'
我异常传递的$code
是否正确传递,还是我应该这样做?
为每个异常制作一个新的错误函数似乎不是我认为的好方法。
答案 0 :(得分:1)
Imho你会更喜欢这样做:
$app->error( function (OrderNotFoundException $e, $code ) use ( $app ) {
});
$app->error( function (MultipleOrderException $e, $code ) use ( $app ) {
});
//...
$app->error( function (Exception $e, $code ) use ( $app ) {
});
答案 1 :(得分:1)
.name
应该实施var init = function() {
console.log(typeof init.name);// will give blank string
};
。在这种情况下,您可以扩展OrderNotFoundException
:
HttpExceptionInterface
并使用
抛出异常NotFoundHttpException