我在我的beanstalkd作业类中抛出异常时出现了一个奇怪的问题。当我在作业类之外抛出一个简单的异常(throw new \Exception();
)时,它会调用App \ Exceptions \ Handler中的report()方法,我可以在那里做我的调整。但是,当我在作业类中抛出异常时,它不调用report()方法。所有的队列实现都基于laravel文档(https://laravel.com/docs/5.1/queues),并且效果很好。这可能是什么原因?任何帮助将不胜感激。队列工的Laravel异常处理程序
2
A
回答
3
那么,它必须是不同的队列。如果作业失败(引发异常),则不希望将控制权交给异常处理程序 - 您希望捕获该错误并将作业标记为失败。
往里Worker.php(线294+):
protected function raiseExceptionOccurredJobEvent($connection, Job $job, $exception)
{
if ($this->events) {
$data = json_decode($job->getRawBody(), true);
$this->events->fire(new Events\JobExceptionOccurred($connection, $job, $data, $exception));
}
}
参见process()
在线路201-223以及。
Laravel将捕获异常,但会触发事件以通知您存在问题。如果你需要进入它 - 只是听这个事件。
0
随着laravel 5.1当我使用QUEUE_DRIVER=sync
时,我改变它为QUEUE_DRIVER=redis
和异常处理程序开始做它的工作,我的意思是打电话report()
方法。
以确保您使用运行开始artisan queue:work redis
与
相关问题
- 1. Laravel 5跳过异常处理程序
- 2. laravel:异常处理
- 3. Laravel命令队列异常
- 4. Laravel 5.4队列处理不工作
- 5. 异常处理异步线程队列java.lang.UnsupportedOperationException
- 6. 在全局异常处理程序中处理线程异常?
- 7. 异常处理程序
- 8. php:在异常处理程序中处理异常?
- 9. 如何在使用线程和队列时处理异常?
- 10. Laravel在异常处理程序中的数字海洋错误
- 11. 重定向Laravel的异常处理程序
- 12. Laravel:更改异常处理程序类的位置
- 13. jQuery的事件处理程序队列
- 14. 处理ServiceStack中的序列化异常
- 15. 程序流程处理时异常PLSQL
- 16. Laravel异常处理程序没有捕捉TokenMismatchException
- 17. 默认的.NET异常处理程序
- 18. 在Linux上的异常处理程序
- 19. WPF应用程序的异常处理
- 20. NullPointerException异常处理程序的Android
- 21. 如何处理Laravel中的htmlentities()异常
- 22. Laravel 5.5。应用程序的外观是不是在异常处理程序
- 23. Laravel队列,队列是如何处理的?
- 24. ASP.NET异常处理工具
- 25. 处理“序列没有元素”异常
- 26. 春天异常处理程序不处理某些类型的异常
- 27. Eclipse调试有对话框:异常处理异步线程队列java.lang.NullPointerException
- 28. Laravel队列不能正常工作
- 29. 服务总线队列主机服务的异常处理
- 30. 异常打滑的异常处理程序
谢谢@Denis Mysenko。我同意。听这个事件似乎是一个更好的主意,它使代码干净利落。 –
我在Laravel 5.1中有另一个Worker.php。你使用什么版本? –
在laravel 5.3中我找到了这个函数。谢谢。 –