在 Laravel 事件监听器中处理异常

问题描述 投票:0回答:1

我想完全按照

handle()
方法处理我的监听器中的异常

/**
 * Handle the event.
 *
 * @param DocumentGenerated $event
 * @return void
 */
public function handle(DocumentGenerated $event)
{
    $data = $event->data;
    $this->generateDoc($data);
}

看了文档后发现监听器的handle()方法应该返回false来停止事件传播

我将 handle() 方法的返回类型从 void 更改为 boolean 并尝试返回 false 但它并没有停止事件传播。

php laravel listener
1个回答
0
投票

可以通过捕获异常并返回false来处理异常。例子:

  /**
 * Handle the event.
 *
 * @param DocumentGenerated $event
 * @return void
 */
public function handle(FirstPaymentScheduleCreated $event)
{
  try {
    $data = $event->data;
    $this->generateDoc($data);

   }catch (Exception $e) {
    //Handle the exception
    return false; //stop event propagation
   }
    return true // allow event propagation
}
© www.soinside.com 2019 - 2024. All rights reserved.