/usr/share/perl5/DBIx/Class/Exception.pm is in libdbix-class-perl 0.08250-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | package DBIx::Class::Exception;
use strict;
use warnings;
# load Carp early to prevent tickling of the ::Internal stash being
# interpreted as "Carp is already loaded" by some braindead loader
use Carp ();
$Carp::Internal{ (__PACKAGE__) }++;
use DBIx::Class::Carp ();
use overload
'""' => sub { shift->{msg} },
fallback => 1;
=head1 NAME
DBIx::Class::Exception - Exception objects for DBIx::Class
=head1 DESCRIPTION
Exception objects of this class are used internally by
the default error handling of L<DBIx::Class::Schema/throw_exception>
and derivatives.
These objects stringify to the contained error message, and use
overload fallback to give natural boolean/numeric values.
=head1 METHODS
=head2 throw
=over 4
=item Arguments: $exception_scalar, $stacktrace
=back
This is meant for internal use by L<DBIx::Class>'s C<throw_exception>
code, and shouldn't be used directly elsewhere.
Expects a scalar exception message. The optional argument
C<$stacktrace> tells it to output a full trace similar to L<Carp/confess>.
DBIx::Class::Exception->throw('Foo');
try { ... } catch { DBIx::Class::Exception->throw(shift) }
=cut
sub throw {
my ($class, $msg, $stacktrace) = @_;
# Don't re-encapsulate exception objects of any kind
die $msg if ref($msg);
# all exceptions include a caller
$msg =~ s/\n$//;
if(!$stacktrace) {
# skip all frames that match the original caller, or any of
# the dbic-wide classdata patterns
my ($ln, $calling) = DBIx::Class::Carp::__find_caller(
'^' . caller() . '$',
'DBIx::Class',
);
$msg = "${calling}${msg} ${ln}\n";
}
else {
$msg = Carp::longmess($msg);
}
my $self = { msg => $msg };
bless $self => $class;
die $self;
}
=head2 rethrow
This method provides some syntactic sugar in order to
re-throw exceptions.
=cut
sub rethrow {
die shift;
}
=head1 AUTHOR AND CONTRIBUTORS
See L<AUTHOR|DBIx::Class/AUTHOR> and L<CONTRIBUTORS|DBIx::Class/CONTRIBUTORS> in DBIx::Class
=head1 LICENSE
You may distribute this code under the same terms as Perl itself.
=cut
1;
|