phrity / util-errorhandler
内联错误处理器;捕获并解决代码块中的错误。
1.1.1
2024-09-12 06:49 UTC
Requires
- php: ^7.4 | ^8.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^9.0 | ^10.0 | ^11.0
- squizlabs/php_codesniffer: ^3.5
README
错误处理器实用工具
PHP 的错误处理可能会有些头疼。通常应用程序会使用系统级别的 错误处理器 和/或使用 @
前缀来抑制错误。但当你的代码需要响应触发错误时,情况就更加复杂。
这个库提供了两种便利的方法来处理代码块中的错误,要么抛出异常,要么在发生错误时运行回调代码。
当前版本支持 PHP ^7.2|^8.0
。
安装
使用 Composer 安装;
composer require phrity/util-errorhandler
错误处理器
该类提供了两个主要方法;with()
和 withAll()
。区别在于 with()
将立即对错误进行处理并终止代码执行,而 withAll()
将尝试执行整个代码块后再对发生的错误进行处理。
抛出 ErrorException
use Phrity\Util\ErrorHandler; $handler = new ErrorHandler(); $result = $handler->with(function () { // Code to execute return $success_result; }); $result = $handler->withAll(function () { // Code to execute return $success_result; });
上述示例将运行回调代码,但如果发生错误,它将抛出 ErrorException。错误消息和严重性将与触发错误相同。
with()
在发生时立即抛出withAll()
在代码完成后抛出;如果发生多个错误,则首先抛出第一个
抛出指定的 Throwable
use Phrity\Util\ErrorHandler; $handler = new ErrorHandler(); $result = $handler->with(function () { // Code to execute return $success_result; }, new RuntimeException('A specified error')); $result = $handler->withAll(function () { // Code to execute return $success_result; }, new RuntimeException('A specified error'));
上述示例将运行回调代码,但如果发生错误,它将抛出提供的 Throwable。抛出的 Throwable 将附加一个 ErrorException 作为 $previous
。
with()
在发生时立即抛出withAll()
在代码完成后抛出;如果发生多个错误,则首先抛出第一个
使用回调
use Phrity\Util\ErrorHandler; $handler = new ErrorHandler(); $result = $handler->with(function () { // Code to execute return $success_result; }, function (ErrorException $error) { // Code to handle error return $error_result; }); $result = $handler->withAll(function () { // Code to execute return $success_result; }, function (array $errors, $success_result) { // Code to handle errors return $error_result; });
上述示例将运行回调代码,但如果发生错误,它还将调用错误回调。
with()
在发生错误时立即运行错误回调;错误回调期望一个 ErrorException 实例withAll()
在代码完成后运行错误回调;错误回调期望一个 ErrorException 数组以及代码回调的返回结果
过滤错误类型
两个方法都接受错误级别作为最后一个参数。
use Phrity\Util\ErrorHandler; $handler = new ErrorHandler(); $result = $handler->with(function () { // Code to execute return $success_result; }, null, E_USER_ERROR); $result = $handler->withAll(function () { // Code to execute return $success_result; }, null, E_USER_ERROR & E_USER_WARNING);
任何由 set_error_handler 接受的值或值的组合都可以使用。默认是 E_ALL
。 常量列表。
全局错误处理器
该类还具有全局的 set()
和 restore()
方法。
use Phrity\Util\ErrorHandler; $handler = new ErrorHandler(); $handler->set(); // Throws ErrorException on error $handler->set(new RuntimeException('A specified error')); // Throws provided Throwable on error $handler->set(function (ErrorException $error) { // Code to handle errors return $error_result; }); // Runs callback on error $handler->restore(); // Restores error handler
类概要
Phrity\Util\ErrorHandler { /* Methods */ public __construct() public with(callable $callback, mixed $handling = null, int $levels = E_ALL) : mixed public withAll(callable $callback, mixed $handling = null, int $levels = E_ALL) : mixed public set($handling = null, int $levels = E_ALL) : mixed public restore() : bool }