Merge ../Moose-error into pluggable_errors
[gitmo/Moose.git] / lib / Moose.pm
index 69dbc63..e32844b 100644 (file)
@@ -36,6 +36,8 @@ use Moose::Meta::Role::Application::ToInstance;
 use Moose::Util::TypeConstraints;
 use Moose::Util ();
 
+BEGIN { *throw_error = \&confess } # FIXME make this smarter
+
 sub extends {
     my $class = shift;
 
@@ -151,11 +153,11 @@ sub init_meta {
     my %args = @_;
 
     my $class = $args{for_class}
-        or confess "Cannot call init_meta without specifying a for_class";
+        or throw_error "Cannot call init_meta without specifying a for_class";
     my $base_class = $args{base_class} || 'Moose::Object';
     my $metaclass  = $args{metaclass}  || 'Moose::Meta::Class';
 
-    confess
+    throw_error
         "The Metaclass $metaclass must be a subclass of Moose::Meta::Class."
         unless $metaclass->isa('Moose::Meta::Class');
 
@@ -167,7 +169,7 @@ sub init_meta {
 
     if ( $meta = Class::MOP::get_metaclass_by_name($class) ) {
         unless ( $meta->isa("Moose::Meta::Class") ) {
-            confess "$class already has a metaclass, but it does not inherit $metaclass ($meta)";
+            throw_error "$class already has a metaclass, but it does not inherit $metaclass ($meta)";
         }
     } else {
         # no metaclass, no 'meta' method
@@ -209,7 +211,7 @@ sub init_meta {
         my $method_meta = $class->meta;
 
         ( blessed($method_meta) && $method_meta->isa('Moose::Meta::Class') )
-            || confess "$class already has a &meta function, but it does not return a Moose::Meta::Class ($meta)";
+            || throw_error "$class already has a &meta function, but it does not return a Moose::Meta::Class ($meta)";
 
         $meta = $method_meta;
     }
@@ -843,6 +845,10 @@ instead, which lets you stack multiple C<Moose.pm>-alike modules
 sanely. It handles getting the exported functions into the right place
 for you.
 
+=head2 throw_error
+
+An alias for C<confess>, used by internally by Moose.
+
 =head1 CAVEATS
 
 =over 4