diff --git a/src/pocketmine/scheduler/TaskHandler.php b/src/pocketmine/scheduler/TaskHandler.php index 4b83b2e44..5c86d3d46 100644 --- a/src/pocketmine/scheduler/TaskHandler.php +++ b/src/pocketmine/scheduler/TaskHandler.php @@ -25,7 +25,6 @@ namespace pocketmine\scheduler; use pocketmine\timings\Timings; use pocketmine\timings\TimingsHandler; -use pocketmine\utils\MainLogger; class TaskHandler{ @@ -145,8 +144,6 @@ class TaskHandler{ if(!$this->isCancelled()){ $this->task->onCancel(); } - }catch(\Throwable $e){ - MainLogger::getLogger()->logException($e); }finally{ $this->remove(); } diff --git a/src/pocketmine/scheduler/TaskScheduler.php b/src/pocketmine/scheduler/TaskScheduler.php index 294ddd3a9..1c7af2e97 100644 --- a/src/pocketmine/scheduler/TaskScheduler.php +++ b/src/pocketmine/scheduler/TaskScheduler.php @@ -106,14 +106,19 @@ class TaskScheduler{ */ public function cancelTask(int $taskId){ if($taskId !== null and isset($this->tasks[$taskId])){ - $this->tasks[$taskId]->cancel(); + try{ + $this->tasks[$taskId]->cancel(); + }catch(\Throwable $e){ + $this->logger->critical("Task " . $this->tasks[$taskId]->getTaskName() . " threw an exception when trying to cancel: " . $e->getMessage()); + $this->logger->logException($e); + } unset($this->tasks[$taskId]); } } public function cancelAllTasks(){ - foreach($this->tasks as $task){ - $task->cancel(); + foreach($this->tasks as $id => $task){ + $this->cancelTask($id); } $this->tasks = []; while(!$this->queue->isEmpty()){