From 5f4a00c77e2815f1d877b500fb8d30179bbec290 Mon Sep 17 00:00:00 2001 From: sunxyw Date: Tue, 15 Nov 2022 21:48:46 +0800 Subject: [PATCH] refactor ZMException --- src/ZM/Bootstrap/HandleExceptions.php | 2 +- src/ZM/Exception/ConfigException.php | 13 ++++--------- src/ZM/Exception/Handler.php | 16 +++++----------- src/ZM/Exception/InitException.php | 7 +++++++ src/ZM/Exception/InterruptException.php | 3 ++- src/ZM/Exception/InvalidArgumentException.php | 3 ++- src/ZM/Exception/ZMException.php | 6 ++++++ 7 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/ZM/Bootstrap/HandleExceptions.php b/src/ZM/Bootstrap/HandleExceptions.php index 709552d3..0ca4e13e 100644 --- a/src/ZM/Bootstrap/HandleExceptions.php +++ b/src/ZM/Bootstrap/HandleExceptions.php @@ -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 diff --git a/src/ZM/Exception/ConfigException.php b/src/ZM/Exception/ConfigException.php index 7d415943..6909d703 100644 --- a/src/ZM/Exception/ConfigException.php +++ b/src/ZM/Exception/ConfigException.php @@ -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); } } diff --git a/src/ZM/Exception/Handler.php b/src/ZM/Exception/Handler.php index e2457320..24358f56 100644 --- a/src/ZM/Exception/Handler.php +++ b/src/ZM/Exception/Handler.php @@ -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); } } diff --git a/src/ZM/Exception/InitException.php b/src/ZM/Exception/InitException.php index 49ba9dce..fed7146c 100644 --- a/src/ZM/Exception/InitException.php +++ b/src/ZM/Exception/InitException.php @@ -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); + } } diff --git a/src/ZM/Exception/InterruptException.php b/src/ZM/Exception/InterruptException.php index 3dcb2286..fd8bb65b 100644 --- a/src/ZM/Exception/InterruptException.php +++ b/src/ZM/Exception/InterruptException.php @@ -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; } } diff --git a/src/ZM/Exception/InvalidArgumentException.php b/src/ZM/Exception/InvalidArgumentException.php index 460b0bf0..babe269f 100644 --- a/src/ZM/Exception/InvalidArgumentException.php +++ b/src/ZM/Exception/InvalidArgumentException.php @@ -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); } } diff --git a/src/ZM/Exception/ZMException.php b/src/ZM/Exception/ZMException.php index e5fef9a8..35e43ac2 100644 --- a/src/ZM/Exception/ZMException.php +++ b/src/ZM/Exception/ZMException.php @@ -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); + } }