phrity/util-errorhandler

内联错误处理器;捕获并解决代码块中的错误。

1.1.1 2024-09-12 06:49 UTC

This package is auto-updated.

Last update: 2024-09-12 06:50:57 UTC


README

Build Status Coverage Status

错误处理器实用工具

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
}

版本