Making ClientExceptions turn into ClientErrorAction

Got some 404s which were presented as 500
This commit is contained in:
Mikael Nordfeldth 2016-01-14 02:47:28 +01:00
parent 99261e0781
commit 6834f355f2
3 changed files with 16 additions and 32 deletions

View File

@ -125,16 +125,21 @@ function handleError($error)
common_config('site', 'email') common_config('site', 'email')
); );
$dac = new DBErrorAction($msg, 500); $erraction = new DBErrorAction($msg, 500);
$dac->showPage(); } elseif ($error instanceof ClientException) {
$erraction = new ClientErrorAction($error->getMessage(), $error->getCode());
} elseif ($error instanceof ServerException) {
$erraction = new ServerErrorAction($error->getMessage(), $error->getCode(), $error);
} else { } else {
$sac = new ServerErrorAction($error->getMessage(), 500, $error); // If it wasn't specified more closely which kind of exception it was
$sac->showPage(); $erraction = new ServerErrorAction($error->getMessage(), 500, $error);
} }
$erraction->showPage();
} catch (Exception $e) { } catch (Exception $e) {
// TRANS: Error message. // TRANS: Error message.
echo _('An error occurred.'); echo _('An error occurred.');
exit(-1);
} }
exit(-1); exit(-1);
} }
@ -255,13 +260,6 @@ function main()
$args = $r->map($path); $args = $r->map($path);
if (!$args) {
// TRANS: Error message displayed when trying to access a non-existing page.
$cac = new ClientErrorAction(_('Unknown page'), 404);
$cac->showPage();
return;
}
$site_ssl = common_config('site', 'ssl'); $site_ssl = common_config('site', 'ssl');
// If the request is HTTP and it should be HTTPS... // If the request is HTTP and it should be HTTPS...
@ -309,22 +307,10 @@ function main()
if (!class_exists($action_class)) { if (!class_exists($action_class)) {
// TRANS: Error message displayed when trying to perform an undefined action. // TRANS: Error message displayed when trying to perform an undefined action.
$cac = new ClientErrorAction(_('Unknown action'), 404); throw new ClientException(_('Unknown action'), 404);
$cac->showPage();
} else {
try {
call_user_func("$action_class::run", $args);
} catch (ClientException $cex) {
$cac = new ClientErrorAction($cex->getMessage(), $cex->getCode());
$cac->showPage();
} catch (ServerException $sex) { // snort snort guffaw
$sac = new ServerErrorAction($sex->getMessage(), $sex->getCode(), $sex);
$sac->showPage();
} catch (Exception $ex) {
$sac = new ServerErrorAction($ex->getMessage(), 500, $ex);
$sac->showPage();
}
} }
call_user_func("$action_class::run", $args);
} }
main(); main();

View File

@ -1094,14 +1094,12 @@ class Router
function map($path) function map($path)
{ {
try { try {
$match = $this->m->match($path); return $this->m->match($path);
} catch (Exception $e) { } catch (NoRouteMapException $e) {
common_debug('Problem getting route for '._ve($path).' - '._ve($e->getMessage())); common_debug($e->getMessage());
// TRANS: Client error on action trying to visit a non-existing page. // TRANS: Client error on action trying to visit a non-existing page.
throw new ClientException(_('Page not found.'), 404); throw new ClientException(_('Page not found.'), 404);
} }
return $match;
} }
function build($action, $args=null, $params=null, $fragment=null) function build($action, $args=null, $params=null, $fragment=null)

View File

@ -123,7 +123,7 @@ class URLMapper
} }
} }
throw new Exception(sprintf('No match for path "%s"', $path)); throw new NoRouteMapException($path);
} }
function generate($args, $qstring, $fragment) function generate($args, $qstring, $fragment)