Improved exception handling and trace creation

This commit is contained in:
Shoghi Cervantes 2015-01-01 22:50:45 +01:00
parent 7be4e2fa81
commit 3128ae9736
No known key found for this signature in database
GPG Key ID: 78464DB0A7837F89
3 changed files with 13 additions and 7 deletions

View File

@ -1990,6 +1990,10 @@ class Server{
global $lastError;
if($trace === null){
$trace = $e->getTrace();
}
$errstr = $e->getMessage();
$errfile = $e->getFile();
$errno = $e->getCode();
@ -2012,7 +2016,7 @@ class Server{
"fullFile" => $e->getFile(),
"file" => $errfile,
"line" => $errline,
"trace" => @getTrace($trace === null ? 3 : 0, $trace)
"trace" => @getTrace(1, $trace)
];
global $lastExceptionError, $lastError;
@ -2097,7 +2101,7 @@ class Server{
$level->doTick($currentTick);
}catch(\Exception $e){
$this->logger->critical("Could not tick level " . $level->getName() . ": " . $e->getMessage());
if($this->logger instanceof MainLogger){
if(\pocketmine\DEBUG > 1 and $this->logger instanceof MainLogger){
$this->logger->logException($e);
}
}

View File

@ -103,6 +103,9 @@ class MainLogger extends \AttachableThreadedLogger{
}
public function logException(\Exception $e, $trace = null){
if($trace === null){
$trace = $e->getTrace();
}
$errstr = $e->getMessage();
$errfile = $e->getFile();
$errno = $e->getCode();
@ -137,8 +140,7 @@ class MainLogger extends \AttachableThreadedLogger{
}
$errfile = \pocketmine\cleanPath($errfile);
$this->log($type, get_class($e) . ": \"$errstr\" ($errno) in \"$errfile\" at line $errline");
foreach(($trace = @\pocketmine\getTrace($trace === null ? 4 : 0, $trace)) as $i => $line){
foreach(@\pocketmine\getTrace(1, $trace) as $i => $line){
$this->debug($line);
}
}

View File

@ -38,9 +38,9 @@ class VersionString{
$this->generation = ($version >> 9) & 0x0F;
}else{
$version = preg_split("/([A-Za-z]*)[ _\\-]?([0-9]*)\\.([0-9]*)\\.{0,1}([0-9]*)(dev|)(-[\\0-9]{1,}|)/", $version, -1, PREG_SPLIT_DELIM_CAPTURE);
$this->generation = (int) $version[2]; //0-15
$this->major = (int) $version[3]; //0-15
$this->minor = (int) $version[4]; //0-31
$this->generation = isset($version[2]) ? (int) $version[2] : 0; //0-15
$this->major = isset($version[3]) ? (int) $version[3] : 0; //0-15
$this->minor = isset($version[4]) ? (int) $version[4] : 0; //0-31
$this->development = $version[5] === "dev" ? true : false;
if($version[6] !== ""){
$this->build = intval(substr($version[6], 1));