diff -ur DBIx-Class-Validation-0.02005.original/lib/DBIx/Class/Validation.pm DBIx-Class-Validation-0.02005/lib/DBIx/Class/Validation.pm
--- DBIx-Class-Validation-0.02005.original/lib/DBIx/Class/Validation.pm	2009-07-11 15:20:55.000000000 +0000
+++ DBIx-Class-Validation-0.02005/lib/DBIx/Class/Validation.pm	2010-05-13 00:46:18.000000000 +0000
@@ -1,4 +1,14 @@
 # $Id$
+package DBIx::Class::Validation::Exception;
+use overload bool => sub { $_[0]->success ? '' : 1 };
+use overload ne => sub { $_[0]->success ? '' : "Error" };
+use overload eq => sub { ! $_[0]->success ? '' : "Error" };
+sub new { 
+    my ($class, $validator_class, $result) = @_;
+    push @ISA, $validator_class."::Results";
+    bless $result, $class 
+}
+
 package DBIx::Class::Validation;
 use strict;
 use warnings;
@@ -161,7 +171,9 @@
 Validates all the data in the object against the pre-defined validation
 module and profile.  If there is a problem then a hard error will be
 thrown.  If you put the validation in an eval you can capture whatever
-the module's check() method returned.
+the module's check() method returned in $@. $@ will have its boolean
+check overloaded to "" on success (for normal exception checking after 
+an eval)
 
 =cut
 
@@ -182,7 +194,8 @@
         };
         return $result;
     } else {
-        croak $result;
+        my $exception = DBIx::Class::Validation::Exception->new( ref $self-> _validation_module_accessor, $result );
+        croak $exception;
     };
 };
 
diff -ur DBIx-Class-Validation-0.02005.original/t/dfv.t DBIx-Class-Validation-0.02005/t/dfv.t
--- DBIx-Class-Validation-0.02005.original/t/dfv.t	2009-07-11 14:41:25.000000000 +0000
+++ DBIx-Class-Validation-0.02005/t/dfv.t	2010-05-13 00:46:36.000000000 +0000
@@ -10,7 +10,7 @@
     plan skip_all => 'Data::FormValidator not installed'
         unless eval 'require Data::FormValidator';
 
-    plan tests => 10;
+    plan tests => 15;
 };
 
 use Data::FormValidator::Constraints qw(:closures);
@@ -87,16 +87,23 @@
 
     ## Create a new row with a new email.
 
-    my $new_email_rs =  $schema->resultset('Test')->create({name => 'testA', email => 'testaa@test.org', 'createts'=> $test_time});
+    my $new_email_rs = eval { $schema->resultset('Test')->create({name => 'testA', email => 'testaa@test.org', 'createts'=> $test_time}) };
+    ok( !$@, "No exception found" );
+    ok( $@ eq "", "No exception found (scalar context)" );
     is $new_email_rs->email, 'testaa@test.org', 'Created a unique Email Address';
 
     my $bad_rs = eval{ $schema->resultset('Test')->create({name => 'testA', email => 'testaa@test.org', 'createts'=> $test_time}) };
     isa_ok $@, 'Data::FormValidator::Results', 'Failed as expected';
 
+    ok( $@, "Exception found" );
+    ok( $@ ne "", "Exception found (ne context)" );
+    ok( !( $@ eq "" ), "Exception found (eq context)" );
+
     my @bad_fields  = $@->invalid;
     my $errs_msgs   = $@->invalid;
 
     ok($bad_fields[0] eq 'email', 'Invalid Field correctly identified');
     ok($errs_msgs->{email}->[0] eq 'email_not_unique', 'Invalid Field Message Found');
     ok($new_email_rs->createts->epoch == $test_time, "Correctly filtered inflated object");
-};
\ No newline at end of file
+
+};
diff -ur DBIx-Class-Validation-0.02005.original/t/fvs.t DBIx-Class-Validation-0.02005/t/fvs.t
--- DBIx-Class-Validation-0.02005.original/t/fvs.t	2009-07-11 14:48:18.000000000 +0000
+++ DBIx-Class-Validation-0.02005/t/fvs.t	2010-05-13 00:46:12.000000000 +0000
@@ -5,7 +5,7 @@
 
 BEGIN {
     use lib 't/lib';
-    use DBIC::Test tests => 17;
+    use DBIC::Test tests => 21;
 }
 
 my $schema = DBIC::Test->init_schema;
@@ -19,12 +19,16 @@
 Class::C3->reinitialize();
 
 $row = eval{  $schema->resultset('Test')->create({name => ''}) };
+ok( $@, "Exception found" );
+ok( $@ ne "", "Exception found (ne context)" );
+ok( ! $@ eq "", "Exception found (eq context)" );
 isa_ok $@, 'FormValidator::Simple::Results', 'blank value not accepted';
 
 $row = eval{ $schema->resultset('Test')->create({name => 'qwertyqwerty'}) };
 isa_ok $@, 'FormValidator::Simple::Results', 'long string not accepted';
 
 $row = eval{ $schema->resultset('Test')->create({name => 'qwerty'}) };
+ok( !$@, "No exception found" );
 is $row->name, 'qwerty', 'valid data accepted';
 
 # updates too
