aboutsummaryrefslogtreecommitdiff
path: root/middlewares/ExceptionMiddleware.php
diff options
context:
space:
mode:
Diffstat (limited to 'middlewares/ExceptionMiddleware.php')
-rw-r--r--middlewares/ExceptionMiddleware.php24
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