2016-09-22 18 views
2

私はSymfony 2で作業していますが、小さな問題ソルバーバンドルを作成しようとしています。コントローラーで実行されたコマンドから例外をスローする

私はretryフィールドを含むエンティティProblemを持っています。このフィールドには、以前に失敗したものを再試行するために実行するコマンドに関する情報が含まれています。だからここ

は私のコントローラのコードです:

public function retryAction($id) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $problem = $em->getRepository('RBLogsBundle:Problem')->find($id); 

    $kernel = $this->get('kernel'); 

    $application = new Application($kernel); 
    $application->setAutoExit(false); 

    $input = new ArrayInput($problem->getRetry()); 

    $output = new BufferedOutput(); 
    $application->run($input,$output); 

    $content = $output->fetch(); 

    return new Response($content); 
} 

私のコマンドが失敗すると、それが通常は例外をスローします。しかし、ここでは、コマンド中にスローされた例外がコマンドを停止するように見えますが、コントローラの実行は継続します。

コントローラでコマンドが正常終了したかどうかをどのように知ることができますか?

+0

、私が持っている唯一の解決策は、 '[例外]' '文字列をoutput'で見ているが、それはそう感じているので、悪い習慣... – Hammerbot

答えて

1

申し訳ありませんが、メソッドを含むApplicationクラスのソリューションが見つかりました。解決策は、以下のいずれかです。現時点では

$application = new Application($kernel); 
$application->setCatchExceptions(false); 
+0

あなたは[ConsoleEvents :: EXCEPTION](https://symfony.com/doc/current/components/console/events.html#the-consoleevents-exception-event) – doydoy44

+0

を見たことがありますか?共有してくれてありがとう! – Hammerbot

+0

ようこそ。あなたはあなたの答えを検証する必要があります:) – doydoy44

関連する問題