grifart/suppressed-exceptions
最新稳定版本:v0.2.2
Composer 安装命令:
composer require grifart/suppressed-exceptions
包简介
Adds support for suppressed exceptions as known in Java. https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html#suppressed-exceptions
README 文档
README
Suppressed exceptions are useful for aggregating more exceptions from unreliable resources.
Useful when you want to communicate that process failed, with a list of sibling exceptions that led to an error.
repositories:
- Grifart GitLab
- GitHub (mirror)
Example usage
$remoteSources = []; // classes representing unreliable remote sources $exceptions = []; foreach ($remoteSoures as $remoteSource) { try { $remoteSource->fetch(); // unsafe operation } catch (FetchingFailed $e) { $exceptions[] = $e; continue; } } if (count($exceptions) > 0) { $e = new ProcessingFailed(); $e->addSuppressed(...$exceptions); throw $e; }
You can also override exception constructor to provide better API
final class EventPropagationFailedException extends \RuntimeException implements \Grifart\SuppressedExceptions\WithSuppressedExceptions { use \Grifart\SuppressedExceptions\SuppressedExceptions; public function __construct(\Throwable ...$suppressed) { parent::__construct('Saving succeeded, but some listeners failed to complete their job. Please check suppressed exceptions for more information.'); $this->addSuppressed(...$suppressed); } }
Usage is then
throw new EventPropagationFailedException(...$suppressedExceptions);
TODO: screenshot from debugger how it looks when catched
More reading
统计信息
- 总下载量: 25k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-11-06