diff options
author | Tatsuhiko Miyagawa <miyagawa@bulknews.net> | 2015-04-19 16:56:20 +0200 |
---|---|---|
committer | Tatsuhiko Miyagawa <miyagawa@bulknews.net> | 2015-04-19 16:56:20 +0200 |
commit | d0e650402d23bf1e9e2be68b3fe38b55419e3c4b (patch) | |
tree | 58729a75d5ba838f5867587ce3438bcc63a91bb0 /lib | |
parent | d422cbba91bb463e7e3b59ec58b9ecde741afdd3 (diff) | |
download | carton-d0e650402d23bf1e9e2be68b3fe38b55419e3c4b.tar.gz |
remove Exception::Class
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Carton/Error.pm | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/lib/Carton/Error.pm b/lib/Carton/Error.pm index 7c8074f..b469eac 100644 --- a/lib/Carton/Error.pm +++ b/lib/Carton/Error.pm @@ -1,12 +1,42 @@ package Carton::Error; use strict; -use Exception::Class ( - 'Carton::Error', - 'Carton::Error::CommandNotFound' => { isa => 'Carton::Error' }, - 'Carton::Error::CommandExit' => { isa => 'Carton::Error', fields => [ 'code' ] }, - 'Carton::Error::CPANfileNotFound' => { isa => 'Carton::Error' }, - 'Carton::Error::SnapshotParseError' => { isa => 'Carton::Error', fields => [ 'path' ] }, - 'Carton::Error::SnapshotNotFound' => { isa => 'Carton::Error', fields => [ 'path' ] }, -); +use overload '""' => sub { $_[0]->error }; +use Carp; + +sub throw { + my($class, @args) = @_; + die $class->new(@args); +} + +sub rethrow { + die $_[0]; +} + +sub new { + my($class, %args) = @_; + bless \%args, $class; +} + +sub error { + $_[0]->{error} || ref $_[0]; +} + +package Carton::Error::CommandNotFound; +use parent 'Carton::Error'; + +package Carton::Error::CommandExit; +use parent 'Carton::Error'; +sub code { $_[0]->{code} } + +package Carton::Error::CPANfileNotFound; +use parent 'Carton::Error'; + +package Carton::Error::SnapshotParseError; +use parent 'Carton::Error'; +sub path { $_[0]->{path} } + +package Carton::Error::SnapshotNotFound; +use parent 'Carton::Error'; +sub path { $_[0]->{path} } 1; |