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')
);
$dac = new DBErrorAction($msg, 500);
$dac->showPage();
$erraction = new DBErrorAction($msg, 500);
} elseif ($error instanceof ClientException) {
$erraction = new ClientErrorAction($error->getMessage(), $error->getCode());
} elseif ($error instanceof ServerException) {
$erraction = new ServerErrorAction($error->getMessage(), $error->getCode(), $error);
} else {
$sac = new ServerErrorAction($error->getMessage(), 500, $error);
$sac->showPage();
// If it wasn't specified more closely which kind of exception it was
$erraction = new ServerErrorAction($error->getMessage(), 500, $error);
}
$erraction->showPage();
} catch (Exception $e) {
// TRANS: Error message.
echo _('An error occurred.');
exit(-1);
}
exit(-1);
}
@ -255,13 +260,6 @@ function main()
$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');
// If the request is HTTP and it should be HTTPS...
@ -309,22 +307,10 @@ function main()
if (!class_exists($action_class)) {
// TRANS: Error message displayed when trying to perform an undefined action.
$cac = new ClientErrorAction(_('Unknown action'), 404);
$cac->showPage();
} else {
try {
throw new ClientException(_('Unknown action'), 404);
}
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();
}
}
}
main();

View File

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