talentrydev/error-handling

PHP 库,用于将 PHP 错误转换为异常

3.0.0 2024-05-31 13:22 UTC

This package is auto-updated.

Last update: 2024-08-31 00:35:40 UTC


README

此库提供了一个可以用来将 PHP 错误转换为异常的服务。

安装和配置 symfony 扩展包

  • 运行
composer require talentrydev/error-handling

用法

  • ErrorHandlerFactory 获取 ErrorHandler 实例。
  • 调用 startHandling() 以开始处理错误。您可以添加任意数量的 Severity 参数(但至少需要添加一个)。
  • 在 try-catch 块中执行您预期会抛出错误的代码,捕获适当的 Throwable(见下表)。
  • 调用 stopHandling() 以防止其他地方将错误转换为异常。

示例

<?php

use Talentry\ErrorHandling\Enum\Severity;
use Talentry\ErrorHandling\Error\Warning;
use Talentry\ErrorHandling\ErrorHandler;

class MyClass
{
    public function __construct(
        private readonly ErrorHandler $errorHandler,
    ) {
    }

    public function callBadlyWrittenLibrary()
    {
        try {
            $this->errorHandler->startHandling(new Severity(Severity::WARNING)));
            BadlyWrittenLibrary::methodThatTriggersWarnings();
        } catch (Warning $warning) {
            //log or ignore or do whatever you think is appropriate
        } finally {
            $this->errorHandler->stopHandling();
        }
    }
}		

可用的严重性类型

根据 PHP 手册

以下错误类型不能使用用户定义的函数处理:E_ERRORE_PARSEE_CORE_ERRORE_CORE_WARNINGE_COMPILE_ERRORE_COMPILE_WARNING 和大多数在调用 set_error_handler() 的文件中引发的 E_STRICT

因此,此模块仅支持以下严重性类型

严重性PHP 错误级别抛出的 Throwable
WARNINGE_WARNING警告
NOTICEE_NOTICE通知
USER_ERRORE_USER_ERROR用户错误
USER_WARNINGE_USER_WARNING用户警告
USER_NOTICEE_USER_NOTICE用户通知
STRICTE_STRICT严格
RECOVERABLE_ERRORE_RECOVERABLE_ERROR可恢复错误
DEPRECATEDE_DEPRECATED已弃用
USER_DEPRECATEDE_USER_DEPRECATED用户已弃用
UNKNOWNNone未知错误

特殊 UNKNOWN 严重性作为捕获未识别错误代码时的回退机制提供。不要依赖它或直接使用它。