Commit e3b0182b authored by Jan Kuchař's avatar Jan Kuchař

Update README.md

parent 0afaad19
Pipeline #13411 passed with stages
in 59 seconds
......@@ -2,9 +2,11 @@
repositories: [Grifart GitLab](https://gitlab.grifart.cz/grifart/suppressed-exceptions), [GitHub](https://github.com/grifart/suppressed-exceptions)
Suppressed exceptions are useful for aggregating more exceptions with unreliable resources.
Suppressed exceptions are useful for aggregating more exceptions from unreliable resources.
You want to communicate that process failed, with following list of sibling exceptions that led to this error.
Useful when you want to communicate that process failed, with a list of sibling exceptions that led to an error.
## Example usage
```php
$remoteSources = []; // classes representing unreliable remote sources
......@@ -12,17 +14,48 @@ $remoteSources = []; // classes representing unreliable remote sources
$exceptions = [];
foreach ($remoteSoures as $remoteSource) {
try {
$remoteSource->fetch(); // unrealiable
$remoteSource->fetch(); // unsafe operation
} catch (FetchingFailed $e) {
$exceptions[] = $e;
continue;
}
}
if (count($exceptions) > 0) {
if (count($exceptions) > 0) {
$e = new ProcessingFailed();
$e->addSuppressed(...$exceptions);
throw $e;
}
```
You can also override exception constructor to provide better API
```php
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
```php
throw new EventPropagationFailedException(...$suppressedExceptions);
```
**TODO: screenshot from debugger** how it looks when catched
## More reading
- https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html#suppressed-exceptions
```
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment