}
sub throw {
- my %args;
- if (@_ == 1) {
- $args{message} = shift;
- }
- else {
- %args = @_;
+ if (@_ % 2) {
+ unshift @_, 'message';
}
- my $superclass = delete($args{superclass}) || 'Throwable::Error';
+ my %args = @_;
+
+ my $class = delete($args{class}) || 'Moose::Exception';
my $roles = delete($args{roles});
my $metaclass;
+ load_class($class);
+
if ($roles) {
$metaclass = Moose::Meta::Class->create_anon_class(
- superclasses => [$superclass],
+ superclasses => [$class],
roles => $roles,
);
}
else {
- $metaclass = Moose::Meta::Class->initialize($superclass);
+ $metaclass = Moose::Meta::Class->initialize($class);
}
$metaclass->name->throw(\%args);