c420777cd2c116b90bdd4e87cab8fee29fff7c7e
[koha.git] / Koha / Exception.pm
1 package Koha::Exception;
2
3 # Copyright 2018, 2022 Koha Development Team
4 #
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20 use Modern::Perl;
21
22 use Exception::Class (
23     'Koha::Exception' => {
24         description => "Something went wrong!"
25     },
26 );
27
28 sub full_message {
29     my $self = shift;
30
31     # If a message was passed manually, use it
32     return sprintf "Exception '%s' thrown '%s'\n", ref($self), $self->message
33       if $self->message;
34
35     my $field_hash = $self->field_hash;
36
37     my $description = $self->description;
38     my @fields;
39
40     foreach my $key ( sort keys %$field_hash ) {
41         push @fields, $key . " => " . $field_hash->{$key}
42           if defined $field_hash->{$key};
43     }
44
45     return
46       sprintf "Exception '%s' thrown '%s'" . ( @fields ? " with %s" : "" ) . "\n",
47       ref($self), $description, ( @fields ? join ', ', @fields : () );
48 }
49
50 =head1 NAME
51
52 Koha::Exception - Base class for exceptions
53
54 =head1 Exceptions
55
56 =head2 Koha::Exception
57
58 Generic exception.
59
60 =head1 Class methods
61
62 =head2 full_message
63
64 Generic method for exception stringifying.
65
66 =cut
67
68 1;