/usr/share/perl5/Throwable/Error.pm is in libthrowable-perl 0.200013-1.
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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | package Throwable::Error;
# ABSTRACT: an easy-to-use class for error objects
$Throwable::Error::VERSION = '0.200013';
use Moo 1.000001;
with 'Throwable', 'StackTrace::Auto';
#pod =head1 SYNOPSIS
#pod
#pod package MyApp::Error;
#pod # NOTE: Moo can also be used here instead of Moose
#pod use Moose;
#pod extends 'Throwable::Error';
#pod
#pod has execution_phase => (
#pod is => 'ro',
#pod isa => 'MyApp::Phase',
#pod default => 'startup',
#pod );
#pod
#pod ...and in your app...
#pod
#pod MyApp::Error->throw("all communications offline");
#pod
#pod # or...
#pod
#pod MyApp::Error->throw({
#pod message => "all communications offline",
#pod execution_phase => 'shutdown',
#pod });
#pod
#pod =head1 DESCRIPTION
#pod
#pod Throwable::Error is a base class for exceptions that will be thrown to signal
#pod errors and abort normal program flow. Throwable::Error is an alternative to
#pod L<Exception::Class|Exception::Class>, the features of which are largely
#pod provided by the Moo object system atop which Throwable::Error is built.
#pod
#pod Throwable::Error performs the L<Throwable|Throwable> and L<StackTrace::Auto>
#pod roles. That means you can call C<throw> on it to create and throw an error
#pod object in one call, and that every error object will have a stack trace for its
#pod creation.
#pod
#pod =cut
use overload
q{""} => 'as_string',
fallback => 1;
#pod =attr message
#pod
#pod This attribute must be defined and must contain a string describing the error
#pod condition. This string will be printed at the top of the stack trace when the
#pod error is stringified.
#pod
#pod =cut
has message => (
is => 'ro',
isa => Sub::Quote::quote_sub(q{
die "message must be a string"
unless defined($_[0]) && !ref($_[0]);
}),,
required => 1,
);
#pod =attr stack_trace
#pod
#pod This attribute, provided by L<StackTrace::Auto>, will contain a stack trace
#pod object guaranteed to respond to the C<as_string> method. For more information
#pod about the stack trace and associated behavior, consult the L<StackTrace::Auto>
#pod docs.
#pod
#pod =method as_string
#pod
#pod This method will provide a string representing the error, containing the
#pod error's message followed by the its stack trace.
#pod
#pod =cut
sub as_string {
my ($self) = @_;
my $str = $self->message;
$str .= "\n\n" . $self->stack_trace->as_string;
return $str;
}
around BUILDARGS => sub {
my $orig = shift;
my $self = shift;
return {} unless @_;
return {} if @_ == 1 and ! defined $_[0];
if (@_ == 1 and (!ref $_[0]) and defined $_[0] and length $_[0]) {
return { message => $_[0] };
}
return $self->$orig(@_);
};
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Throwable::Error - an easy-to-use class for error objects
=head1 VERSION
version 0.200013
=head1 SYNOPSIS
package MyApp::Error;
# NOTE: Moo can also be used here instead of Moose
use Moose;
extends 'Throwable::Error';
has execution_phase => (
is => 'ro',
isa => 'MyApp::Phase',
default => 'startup',
);
...and in your app...
MyApp::Error->throw("all communications offline");
# or...
MyApp::Error->throw({
message => "all communications offline",
execution_phase => 'shutdown',
});
=head1 DESCRIPTION
Throwable::Error is a base class for exceptions that will be thrown to signal
errors and abort normal program flow. Throwable::Error is an alternative to
L<Exception::Class|Exception::Class>, the features of which are largely
provided by the Moo object system atop which Throwable::Error is built.
Throwable::Error performs the L<Throwable|Throwable> and L<StackTrace::Auto>
roles. That means you can call C<throw> on it to create and throw an error
object in one call, and that every error object will have a stack trace for its
creation.
=head1 ATTRIBUTES
=head2 message
This attribute must be defined and must contain a string describing the error
condition. This string will be printed at the top of the stack trace when the
error is stringified.
=head2 stack_trace
This attribute, provided by L<StackTrace::Auto>, will contain a stack trace
object guaranteed to respond to the C<as_string> method. For more information
about the stack trace and associated behavior, consult the L<StackTrace::Auto>
docs.
=head1 METHODS
=head2 as_string
This method will provide a string representing the error, containing the
error's message followed by the its stack trace.
=head1 AUTHORS
=over 4
=item *
Ricardo SIGNES <rjbs@cpan.org>
=item *
Florian Ragwitz <rafl@debian.org>
=back
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2015 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
|