talentrydev / error-handling
PHP 库,用于将 PHP 错误转换为异常
3.0.0
2024-05-31 13:22 UTC
Requires
- php: ^8.3
Requires (Dev)
- phpunit/phpunit: ^11
- squizlabs/php_codesniffer: ^3.5
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_ERROR
、E_PARSE
、E_CORE_ERROR
、E_CORE_WARNING
、E_COMPILE_ERROR
、E_COMPILE_WARNING
和大多数在调用 set_error_handler() 的文件中引发的E_STRICT
。
因此,此模块仅支持以下严重性类型
严重性 | PHP 错误级别 | 抛出的 Throwable |
---|---|---|
WARNING | E_WARNING | 警告 |
NOTICE | E_NOTICE | 通知 |
USER_ERROR | E_USER_ERROR | 用户错误 |
USER_WARNING | E_USER_WARNING | 用户警告 |
USER_NOTICE | E_USER_NOTICE | 用户通知 |
STRICT | E_STRICT | 严格 |
RECOVERABLE_ERROR | E_RECOVERABLE_ERROR | 可恢复错误 |
DEPRECATED | E_DEPRECATED | 已弃用 |
USER_DEPRECATED | E_USER_DEPRECATED | 用户已弃用 |
UNKNOWN | None | 未知错误 |
特殊 UNKNOWN
严重性作为捕获未识别错误代码时的回退机制提供。不要依赖它或直接使用它。