1 package Koha
::REST
::Plugin
::Exceptions
;
3 # This file is part of Koha.
5 # Koha is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
10 # Koha is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with Koha; if not, see <http://www.gnu.org/licenses>.
20 use Scalar
::Util
qw( blessed );
23 use Mojo
::Base
'Mojolicious::Plugin';
27 Koha::REST::Plugin::Exceptions
33 =head3 unhandled_exception
39 if ( know_exception ) {
40 handle_known_exception($_);
43 $c->unhandled_exception($_);
46 Provides a generic and reusable way to throw unhandled exceptions. This way we
47 can centralize the behaviour control (e.g. production vs. development environmet)
52 my ( $self, $app ) = @_;
55 'unhandled_exception' => sub {
56 my ( $c, $exception ) = @_;
59 my $method = $req->method;
60 my $path = $req->url->to_abs->path;
63 if ( blessed
$exception ) {
64 $type = "(" . ref($exception) . ")";
67 my $exception_string = "$exception";
68 chomp($exception_string);
70 my $message = "$method $path: unhandled exception $type\<\<$exception_string\>\>";
72 my $logger = Koha
::Logger
->get({ interface
=> 'api' });
73 $logger->error("$message");
79 "Something went wrong, check Koha logs for details."