In some cases, we want to perform some action when job has failed. For example, send an email or a notification.
For this purpose, we can use failed() method in the job class, just like the handle() method:
namespace App\Jobs\Invoice;use Illuminate\Bus\Batchable;use Illuminate\Bus\Queueable;use Illuminate\Queue\SerializesModels;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Throwable; class CalculateSingleConsignment implements ShouldQueue{    use Batchable, Dispatchable, InteractsWithQueue, Queueable, SerializesModels;     // ... __construct() method, handle() method, etc.     public function failed(Throwable $exception)    {        // Perform any action here when job has failed     }}
Tip given by @pauloimon