Laravel 5.5 обработка неудачных заданий

#laravel #laravel-5

#laravel #laravel-5

Вопрос:

Я пытаюсь выяснить, как обрабатывать неудачные задания. Итак, в моем классе заданий у меня в основном есть что-то вроде этого

 
public function handle()
{
    try {
        $someService = new SomeService($);
        $success = $someService->makeApiRequest();

        if($success) {
            //do something
        } else {
            //trigger failed
        }
    } catch (Exception $e) {
        $this->failed($e);
    }
}

public function failed(Exception $exception)
{
    //Log information
}
  

Что это делает, так это вызывает класс обслуживания, который выполняет запрос API. Этот класс возвращает true или false в зависимости от того, был ли вызов API успешным или нет.

На данный момент у меня просто есть метод API, возвращающий false . Это должно означать, что задание не выполнено. Однако сбой функции не вызывается, и, насколько это касается Laravel, задание обрабатывается.

Как я могу вручную запустить сбой функции, видя, что у меня нет исключения?

Спасибо

Комментарии:

1. Вы помещаете задание в очередь или выполняете его синхронно?

Ответ №1:

Поскольку вы используете задания, вы не перехватываете исключение. Фреймворк сделает это за вас и пометит задание как неудачное.

Итак, ваш handle метод должен быть просто

 public function handle()
{
    $someService = new SomeService($);
    $success = $someService->makeApiRequest();

    if($success) {
       //do something
    } else {
       trow new Exception('error message goes here');
    }
}