refactor ZMException

This commit is contained in:
sunxyw 2022-11-15 21:48:46 +08:00
parent 02003b2bd3
commit 5f4a00c77e
No known key found for this signature in database
GPG Key ID: F391C42B19AFFC98
7 changed files with 27 additions and 23 deletions

View File

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace ZM\Bootstrap;
use OneBot\Driver\ExceptionHandler;
use OneBot\Exception\ExceptionHandler;
use ZM\Exception\Handler;
class HandleExceptions

View File

@ -6,22 +6,17 @@ namespace ZM\Exception;
class ConfigException extends ZMException
{
public const UNSUPPORTED_FILE_TYPE = 'E00079';
public const UNSUPPORTED_FILE_TYPE = 79;
public const LOAD_CONFIG_FAILED = 'E00080';
public function __construct($err_code, $message = '', $code = 0, \Throwable $previous = null)
{
parent::__construct(zm_internal_errcode($err_code) . $message, $code, $previous);
}
public const LOAD_CONFIG_FAILED = 80;
public static function unsupportedFileType(string $file_path): ConfigException
{
return new self(self::UNSUPPORTED_FILE_TYPE, "不支持的配置文件类型:{$file_path}");
return new self("不支持的配置文件类型:{$file_path}", "请检查配置文件的后缀名是否正确", self::UNSUPPORTED_FILE_TYPE);
}
public static function loadConfigFailed(string $file_path, string $message): ConfigException
{
return new self(self::LOAD_CONFIG_FAILED, "加载配置文件失败:{$file_path}{$message}");
return new self("加载配置文件失败:{$file_path}{$message}", "请检查配置文件的格式是否正确,并尝试按照错误信息排查", self::LOAD_CONFIG_FAILED);
}
}

View File

@ -4,14 +4,14 @@ declare(strict_types=1);
namespace ZM\Exception;
use OneBot\Driver\ExceptionHandler;
use OneBot\Exception\ExceptionHandler;
use OneBot\Exception\ExceptionHandlerInterface;
class Handler extends ExceptionHandler
class Handler extends ExceptionHandler implements ExceptionHandlerInterface
{
public function __construct()
{
// 我们知道此处没有调用父类的构造函数,这是设计上的缺陷
// 将会在稍后修复
parent::__construct();
}
public function handle(\Throwable $e): void
@ -21,12 +21,6 @@ class Handler extends ExceptionHandler
// TODO
}
if (is_null($this->whoops)) {
ob_logger()->error('Uncaught ' . get_class($e) . ': ' . $e->getMessage() . ' at ' . $e->getFile() . '(' . $e->getLine() . ')');
ob_logger()->error($e->getTraceAsString());
return;
}
// $this->whoops->handleException($e);
$this->handle0($e);
}
}

View File

@ -4,6 +4,13 @@ declare(strict_types=1);
namespace ZM\Exception;
use Throwable;
class InitException extends ZMException
{
public function __construct(string $message = '', int $code = 0, ?Throwable $previous = null)
{
// TODO: change this to a better error message
parent::__construct($message, '', $code, $previous);
}
}

View File

@ -10,7 +10,8 @@ class InterruptException extends ZMException
public function __construct($return_var = null, $message = '', $code = 0, \Throwable $previous = null)
{
parent::__construct($message, $code, $previous);
// TODO: change this to a better error message
parent::__construct($message, '', $code, $previous);
$this->return_var = $return_var;
}
}

View File

@ -8,6 +8,7 @@ class InvalidArgumentException extends ZMException
{
public function __construct($message = '', $code = 0, \Throwable $previous = null)
{
parent::__construct(zm_internal_errcode('E00074') . $message, $code, $previous);
// TODO: change this to a better error message
parent::__construct($message, '', 74, $previous);
}
}

View File

@ -4,6 +4,12 @@ declare(strict_types=1);
namespace ZM\Exception;
use Throwable;
abstract class ZMException extends \Exception
{
public function __construct(string $description, string $solution = '', int $code = 0, ?Throwable $previous = null)
{
parent::__construct($description . PHP_EOL . $solution, $code, $previous);
}
}