我在我的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關掉異常處理程序
- 2. Laravel 5跳過異常處理程序
- 3. laravel:異常處理
- 4. Laravel命令隊列異常
- 5. Laravel 5.4隊列處理不工作
- 6. 異常處理異步線程隊列java.lang.UnsupportedOperationException
- 7. 在全局異常處理程序中處理線程異常?
- 8. Java:異常處理程序
- 9. 異常處理程序
- 10. php:在異常處理程序中處理異常?
- 11. 如何在使用線程和隊列時處理異常?
- 12. Laravel在異常處理程序中的數字海洋錯誤
- 13. Laravel:更改異常處理程序類的位置
- 14. 重定向Laravel的異常處理程序
- 15. jQuery的事件處理程序隊列
- 16. C#序列未處理的異常
- 17. 處理ServiceStack中的序列化異常
- 18. django異常處理程序中間件和處理程序500
- 19. Laravel異常處理程序沒有捕捉TokenMismatchException
- 20. Laravel自定義異常處理程序未運行
- 21. 如何在Laravel 4中設置「普通」異常處理程序
- 22. 程序流程處理時異常PLSQL
- 23. RestController中的Spring異常處理程序
- 24. 處理新程序中的異常
- 25. 的iOS應用程序異常處理
- 26. 程序中的PL/SQL異常處理
- 27. ServiceClientBase的異常處理程序
- 28. WPF應用程序的異常處理
- 29. NullPointerException異常處理程序的Android
- 30. 單獨的PDO異常處理程序
謝謝@Denis Mysenko。我同意。聽這個事件似乎是一個更好的主意,它使代碼乾淨利落。 –
我在Laravel 5.1中有另一個Worker.php。你使用什麼版本? –
在laravel 5.3中我找到了這個函數。謝謝。 –