私はSilexでアプリケーションを作成しています。私はthrow new OrderNotFoundException($message, 404);
Silexのカスタム例外を予想どおりに実行していません
を行う私のコードで
どこかだから私のindex.php
で$app->error
はこれをキャッチします。 私は以下のようにこれを実装しました:
$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
は正しく渡されましたか、別の方法で行うべきですか?
すべての例外に対して新しいエラー関数を作成することは、私が考える良い方法ではないようです。
そして、私の 'MultipleOrderException'はどうですか?私は 'throw new OrderNotFoundException($ message、409);'のように投げるので、 'class MultipleOrderExceptionextends ConflictHttpException {}'を実行する必要があると思いますか? – MichaelDeBoey
'OrderNotFoundException'は、例外が404コードのみであることを意味します。 (見つかりません)。他のhttpステータスを使いたい場合は、それを 'OrderException'と呼び、ジェネリック[HttpException](https://github.com/symfony/http-kernel/blob/master/Exception/HttpException.php)クラスを拡張するか、またはそれらのhttpステータスのための新しい特定の例外クラス – Federkun
OK今よりもっと明確です:-)あなたと@ DarkBeeの答えを考慮に入れます:-) – MichaelDeBoey