Merge pull request #650 from skipperbent/v5-fix-exception

[BUGFIX] Exception handling improvements
This commit is contained in:
Simon Sessingø
2023-04-07 14:35:56 +02:00
committed by GitHub
2 changed files with 14 additions and 3 deletions
+11
View File
@@ -1037,6 +1037,17 @@ class CustomExceptionHandler implements IExceptionHandler
} }
/* Other error */
if($error instanceof MyCustomException) {
$request->setRewriteRoute(
// Add new route based on current url (minus query-string) and add custom parameters.
(new RouteUrl(url(null, null, []), 'PageController@error'))->setParameters(['exception' => $error])
);
return;
}
throw $error; throw $error;
} }
+3 -3
View File
@@ -346,7 +346,7 @@ class Router
/* Verify csrf token for request */ /* Verify csrf token for request */
$this->csrfVerifier->handle($this->request); $this->csrfVerifier->handle($this->request);
} catch(Exception $e) { } catch(Exception $e) {
$this->handleException($e); return $this->handleException($e);
} }
} }
@@ -444,12 +444,12 @@ class Router
} }
} catch (Exception $e) { } catch (Exception $e) {
$this->handleException($e); return $this->handleException($e);
} }
if ($methodNotAllowed === true) { if ($methodNotAllowed === true) {
$message = sprintf('Route "%s" or method "%s" not allowed.', $this->request->getUrl()->getPath(), $this->request->getMethod()); $message = sprintf('Route "%s" or method "%s" not allowed.', $this->request->getUrl()->getPath(), $this->request->getMethod());
$this->handleException(new NotFoundHttpException($message, 403)); return $this->handleException(new NotFoundHttpException($message, 403));
} }
if (count($this->request->getLoadedRoutes()) === 0) { if (count($this->request->getLoadedRoutes()) === 0) {