RegisteredListener: use try...finally to stop timings

While event handlers should not throw exceptions, we need to make sure the timings get stopped in the correct order, because the parent Event timer will be stopped due to using a finally block.
If this happens while the handler timing is still running, a second exception will occur, obscuring the real error.
This commit is contained in:
Dylan K. Taylor 2023-04-16 00:40:43 +01:00
parent df0d72bf61
commit 4ba57f2b03
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -57,8 +57,11 @@ class RegisteredListener{
return;
}
$this->timings->startTiming();
($this->handler)($event);
$this->timings->stopTiming();
try{
($this->handler)($event);
}finally{
$this->timings->stopTiming();
}
}
public function isHandlingCancelled() : bool{