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 | |
parent | d422cbba91bb463e7e3b59ec58b9ecde741afdd3 (diff) | |
download | carton-d0e650402d23bf1e9e2be68b3fe38b55419e3c4b.tar.gz |
remove Exception::Class
-rw-r--r-- | cpanfile | 1 | ||||
-rw-r--r-- | lib/Carton/Error.pm | 46 |
2 files changed, 38 insertions, 9 deletions
@@ -10,7 +10,6 @@ requires 'Module::CPANfile', 0.9031; requires 'Try::Tiny', 0.09; requires 'parent', 0.223; -requires 'Exception::Class', 1.32; requires 'Getopt::Long', 2.39; requires 'Moo', 1.002; requires 'Path::Tiny', 0.033; 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; |