diff options
Diffstat (limited to 'middlewares/ExceptionMiddleware.php')
-rw-r--r-- | middlewares/ExceptionMiddleware.php | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/middlewares/ExceptionMiddleware.php b/middlewares/ExceptionMiddleware.php new file mode 100644 index 00000000..8bb74713 --- /dev/null +++ b/middlewares/ExceptionMiddleware.php @@ -0,0 +1,24 @@ +<?php + +declare(strict_types=1); + +class ExceptionMiddleware implements Middleware +{ + private Logger $logger; + + public function __construct(Logger $logger) + { + $this->logger = $logger; + } + + public function __invoke(Request $request, $next): Response + { + try { + return $next($request); + } catch (\Throwable $e) { + $this->logger->error('Exception in ExceptionMiddleware', ['e' => $e]); + + return new Response(render(__DIR__ . '/../templates/exception.html.php', ['e' => $e]), 500); + } + } +}
\ No newline at end of file |