LARAVEL 5.6:在作业类中捕获异常

时间:2018-07-06 12:21:06

标签: php laravel-5

我正在尝试捕获作业中的异常,但是try / catch组件似乎没有作用。

    /**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    $progress=0;
    $step=100/count($this->itemsId);

    event(new JobProgressUpdate($progress, '', true, $this->broadcastChannel));
    foreach ($this->itemsId as $itemId) {
        $message='ITEM '.$itemId.': ';
        $success=true;
        try{
            $this->meliCredential->setItemStatus($itemId,$this->status);
        }catch(\Exception $e){
            $message+=$e->getMessage();
            $success=false;
        }

        $progress+=$step;
        event(new JobProgressUpdate($progress, $message, $success, $this->broadcastChannel));
    }
}

该想法是避免将作业标记为失败,而只是将异常消息发送给客户端。

所以问题是,如何在作业处理程序中捕获异常?

我不想停止执行,这就是为什么我需要捕获异常。

1 个答案:

答案 0 :(得分:0)

那只是愚蠢的问题。 问题最初是Exception类的名称空间问题(最初我没有使用“ \”)。 之后,作业因行$message+=$e->getMessage();而崩溃 替换为$message=$message.$e->getMessage();,现在可以正常使用了。