Skip to content

Commit

Permalink
ExtraDataException added
Browse files Browse the repository at this point in the history
  • Loading branch information
yapro committed May 5, 2024
1 parent d605d3a commit d241f5a
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
44 changes: 44 additions & 0 deletions src/ExtraDataException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

declare(strict_types=1);

namespace YaPro\MonologExt;

use Exception;
use Throwable;

/**
* Исключение позволяет передавать в свойстве 'extraData' дополнительные данные любого типа. Это очень удобно тем, что
* такое исключение переданное в Logger будет обработано Logger-процессором AddInformationAboutExceptionProcessor
* который добавит в log-record указанные 'extraData'. Вот пример использования:
* try {
* throw new ExtraDataException('Exception message', $mixedTypeValue);
* } catch (\Exception $e) {
* $this->logger->error('My error message', [$e]);
* throw $e;
* }.
*/
class ExtraDataException extends Exception implements ExtraDataExceptionInterface
{
private mixed $extraData = null;

public function __construct(string $message = '', mixed $extraData = null, Throwable $previous = null, $code = 0)
{
// если понадобится использовать $code чаще чем $previous, то сделаем параметры mixed, а тут проверим и
// поменяем местами переменные, чтобы правильно их передать в parent
parent::__construct($message, $code, $previous);
$this->extraData = $extraData;
}

public function getData(): mixed
{
return $this->extraData;
}

public function setData(mixed $extraData): self
{
$this->extraData = $extraData;

return $this;
}
}
6 changes: 6 additions & 0 deletions tests/Unit/WhiteBox/Processor/Bankiru.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use Exception;
use Throwable;

/**
* @deprecated use \YaPro\MonologExt\ExtraDataExceptionInterface instead
*/
interface ExtraDataExceptionInterface extends Throwable
{
/**
Expand All @@ -20,6 +23,9 @@ public function getData();
public function setData($extraData);
}

/**
* @deprecated use \YaPro\MonologExt\ExtraDataException instead
*/
class ExtraDataException extends Exception implements ExtraDataExceptionInterface
{
/**
Expand Down

0 comments on commit d241f5a

Please sign in to comment.