You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Esse projeto tem por objetivo prover uma biblioteca Laravel que permite implementar de maneira simples e rápida um padrão de exceptions, seguindo os conceitos da [RFC de problem details](https://datatracker.ietf.org/doc/html/rfc7807)
@@ -23,7 +23,7 @@ Após a publicação do pacote deve ser criado um arquivo de configuração para
23
23
24
24
## Configurando
25
25
26
-
Este pacote permite algumas configurações de customização. Para isso deve-se user o arquivo ```problem-detail-exceptions.php```
26
+
Este pacote permite algumas configurações de customização. Para isso deve-se user o arquivo `problem-detail-exceptions.php`
27
27
28
28
Para ter dados coerentes dentro do fluxo é importante ter duas variáveis de ambiente implementadas:
29
29
-**PROBLEM_DETAIL_EXCEPTION_APP_NAME** : Indica o nome que pode aparecer nos logs referente ao nome do projeto ou app que o pacote esta sendo usado.
Para usar o pacote recomendamos que sejam criadas excessões extendendo da classe `Gsousadev\LaravelProblemDetailExceptions\Exceptions\ProblemDetailException` conforme a classe de exemplo abaixo:
67
67
@@ -137,6 +137,47 @@ try {
137
137
}
138
138
```
139
139
140
+
## Padronizando Exceptions
141
+
142
+
Existe uma classe que pode ser usada em conjunto com o Handler de Exceptions do Laravel para permitir que todas as
143
+
exceptions lançadas e que passem pelo handler possam ser transformadas e normalizadas no padrão 'Problem Detail'.
144
+
Isso permite que a aplicação que tenham excetions em formatos diferentes possa rapidamente padronizar a saida dessas
145
+
exceptions para Logs e Requisições HTTP. Geralmente o arquivo de Handler do laravel esta localizado aqui
146
+
`App\Exceptions\Handler.php`. Podemos implementar a classe conforme o exemplo abaixo:
147
+
148
+
149
+
```php
150
+
151
+
<?php
152
+
153
+
namespace App\Exceptions;
154
+
155
+
use Gsousadev\LaravelProblemDetailExceptions\Exceptions\ProblemDetailException;
156
+
use Gsousadev\LaravelProblemDetailExceptions\Exceptions\UnexpectedException;
157
+
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
158
+
use Throwable;
159
+
160
+
class Handler extends ExceptionHandler
161
+
{
162
+
public function register()
163
+
{
164
+
$this->renderable(function (Throwable $e) {
165
+
if (!$e instanceof ProblemDetailException) {
166
+
throw new UnexpectedException($e);
167
+
}
168
+
});
169
+
}
170
+
171
+
public function report(Throwable $e)
172
+
{
173
+
if ($e instanceof ProblemDetailException) {
174
+
parent::report($e);
175
+
}
176
+
}
177
+
}
178
+
179
+
```
180
+
140
181
## Contribuindo
141
182
142
183
O projeto esta em fase de construção da ideia inicial, mas apontamentos de melhorias são muito importantes para o
0 commit comments