First pass at Moose->throw_exception
Shawn M Moore [Thu, 14 Jun 2012 16:15:50 +0000 (11:15 -0500)]
lib/Moose.pm

index 568bdd7..d84217b 100644 (file)
@@ -46,6 +46,27 @@ sub throw_error {
     goto \&confess
 }
 
+sub throw_exception {
+    shift;
+
+    my %args;
+    if (@_ == 1) {
+        $args{message} = shift;
+    }
+    else {
+        %args = @_;
+    }
+
+    my $roles = delete($args{roles});
+
+    my $metaclass = Moose::Meta::Class->create_anon_class(
+        superclasses => ['Throwable::Error'],
+        ($roles ? (roles => $roles) : ()),
+    );
+
+    $metaclass->name->throw(\%args);
+}
+
 sub extends {
     my $meta = shift;