mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-20 16:00:20 +00:00
Improved exception handling and debugging
This commit is contained in:
parent
a906a2988b
commit
4a90ac270f
@ -2088,7 +2088,14 @@ class Server{
|
||||
|
||||
//Do level ticks
|
||||
foreach($this->getLevels() as $level){
|
||||
$level->doTick($currentTick);
|
||||
try{
|
||||
$level->doTick($currentTick);
|
||||
}catch (\Exception $e){
|
||||
$this->logger->critical("Could not tick level ".$level->getName().": ".$e->getMessage());
|
||||
if($this->logger instanceof MainLogger){
|
||||
$this->logger->logException($e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2197,7 +2204,13 @@ class Server{
|
||||
}
|
||||
}
|
||||
|
||||
$this->generationManager->process();
|
||||
try{
|
||||
$this->generationManager->process();
|
||||
}catch (\Exception $e){
|
||||
if($this->logger instanceof MainLogger){
|
||||
$this->logger->logException($e);
|
||||
}
|
||||
}
|
||||
|
||||
if(($this->tickCounter % 100) === 0){
|
||||
foreach($this->levels as $level){
|
||||
|
@ -22,6 +22,7 @@
|
||||
namespace pocketmine\command;
|
||||
|
||||
use pocketmine\Server;
|
||||
use pocketmine\utils\MainLogger;
|
||||
use pocketmine\utils\TextFormat;
|
||||
|
||||
class FormattedCommandAlias extends Command{
|
||||
@ -49,6 +50,9 @@ class FormattedCommandAlias extends Command{
|
||||
$sender->sendMessage(TextFormat::RED . $e->getMessage());
|
||||
}else{
|
||||
$sender->sendMessage(TextFormat::RED . "An internal error occurred while attempting to perform this command");
|
||||
if(($logger = $sender->getServer()->getLogger()) instanceof MainLogger){
|
||||
$logger->logException($e);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -56,6 +56,7 @@ use pocketmine\command\defaults\VanillaCommand;
|
||||
use pocketmine\command\defaults\VersionCommand;
|
||||
use pocketmine\command\defaults\WhitelistCommand;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\utils\MainLogger;
|
||||
|
||||
class SimpleCommandMap implements CommandMap{
|
||||
|
||||
@ -182,6 +183,9 @@ class SimpleCommandMap implements CommandMap{
|
||||
$target->execute($sender, $sentCommandLabel, $args);
|
||||
}catch(\Exception $e){
|
||||
$this->server->getLogger()->critical("Unhandled exception executing command '". $commandLine ."' in ". $target.": ".$e->getMessage());
|
||||
if(($logger = $sender->getServer()->getLogger()) instanceof MainLogger){
|
||||
$logger->logException($e);
|
||||
}
|
||||
}
|
||||
$target->timings->stopTiming();
|
||||
|
||||
|
@ -184,8 +184,8 @@ class RakLibInterface implements ServerInstance, SourceInterface{
|
||||
if(\pocketmine\DEBUG > 1){
|
||||
$logger = $this->server->getLogger();
|
||||
if($logger instanceof MainLogger){
|
||||
$logger->logException($e);
|
||||
$logger->debug("Packet ".get_class($pk)." 0x".bin2hex($packet->buffer));
|
||||
$logger->logException($e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -251,6 +251,9 @@ class PluginManager{
|
||||
}
|
||||
}catch(\Exception $e){
|
||||
$this->server->getLogger()->error("Could not load '" . $file . "' in folder '" . $directory . "': " . $e->getMessage());
|
||||
if(($logger = $this->server->getLogger()) instanceof MainLogger){
|
||||
$logger->logException($e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -666,6 +669,9 @@ class PluginManager{
|
||||
$registration->callEvent($event);
|
||||
}catch(\Exception $e){
|
||||
$this->server->getLogger()->critical("Could not pass event ". $event->getEventName() ." to ". $registration->getPlugin()->getDescription()->getFullName() .": ".$e->getMessage()." on ".get_class($registration->getListener()));
|
||||
if(($logger = $this->server->getLogger()) instanceof MainLogger){
|
||||
$logger->logException($e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ namespace pocketmine\scheduler;
|
||||
|
||||
use pocketmine\plugin\Plugin;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\utils\MainLogger;
|
||||
use pocketmine\utils\PluginException;
|
||||
use pocketmine\utils\ReversePriorityQueue;
|
||||
|
||||
@ -236,6 +237,9 @@ class ServerScheduler{
|
||||
$task->run($this->currentTick);
|
||||
}catch (\Exception $e){
|
||||
Server::getInstance()->getLogger()->critical("Could not execute task ". $task->getTaskName() .": ".$e->getMessage());
|
||||
if(($logger = Server::getInstance()->getLogger()) instanceof MainLogger){
|
||||
$logger->logException($e);
|
||||
}
|
||||
}
|
||||
$task->timings->stopTiming();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user