Skip to content

Commit 547d178

Browse files
authored
Use UserException instead of ApplicationException (#238)
1 parent 7a2a0b3 commit 547d178

3 files changed

Lines changed: 17 additions & 14 deletions

File tree

config/web/di/application.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
'class' => MiddlewareDispatcher::class,
2626
'withMiddlewares()' => [
2727
[
28-
RequestBodyParser::class,
29-
ExceptionMiddleware::class,
3028
ErrorCatcher::class,
29+
ExceptionMiddleware::class,
30+
RequestBodyParser::class,
3131
Router::class,
3232
NotFoundMiddleware::class,
3333
],

src/Exception/ApplicationException.php

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/Http/ExceptionMiddleware.php

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@
44

55
namespace App\Http;
66

7-
use App\Exception\ApplicationException;
87
use Psr\Http\Message\ResponseInterface;
98
use Psr\Http\Message\ServerRequestInterface;
109
use Psr\Http\Server\MiddlewareInterface;
1110
use Psr\Http\Server\RequestHandlerInterface;
11+
use Throwable;
12+
use Yiisoft\ErrorHandler\Exception\UserException;
1213
use Yiisoft\Input\Http\InputValidationException;
1314

15+
use function is_int;
16+
1417
final readonly class ExceptionMiddleware implements MiddlewareInterface
1518
{
1619
public function __construct(
@@ -21,10 +24,17 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
2124
{
2225
try {
2326
return $handler->handle($request);
24-
} catch (ApplicationException $e) {
25-
return $this->apiResponseFactory->fail($e->getMessage(), code: $e->getCode());
26-
} catch (InputValidationException $e) {
27-
return $this->apiResponseFactory->failValidation($e->getResult());
27+
} catch (InputValidationException $exception) {
28+
return $this->apiResponseFactory->failValidation($exception->getResult());
29+
} catch (Throwable $exception) {
30+
if (UserException::isUserException($exception)) {
31+
$code = $exception->getCode();
32+
return $this->apiResponseFactory->fail(
33+
$exception->getMessage(),
34+
code: is_int($code) ? $code : null,
35+
);
36+
}
37+
throw $exception;
2838
}
2939
}
3040
}

0 commit comments

Comments
 (0)