diff --git a/bin/efa b/bin/efa
index b11018b593666ced7a79688a2a57e817225e9599..c916ca0386976ba957a8e144ea1e93af1893a253 100755
--- a/bin/efa
+++ b/bin/efa
@@ -72,8 +72,9 @@ sub check_for_error {
 	my ($eval_error) = @_;
 
 	if ( not defined $efa ) {
-		if ( $eval_error
-			and ref($eval_error) =~ m{^Travel::Routing::DE::VRR::Exception}x )
+		if (    $eval_error
+			and ref($eval_error)
+			and $eval_error->isa('Travel::Routing::DE::VRR::Exception') )
 		{
 			handle_efa_exception($eval_error);
 		}
diff --git a/lib/Travel/Routing/DE/VRR.pm b/lib/Travel/Routing/DE/VRR.pm
index 62d6a3e7218e669008cc22845d966070a1e7e49a..d486a6ea0a79c518236e005ad6011c0b3ee9f5a7 100644
--- a/lib/Travel/Routing/DE/VRR.pm
+++ b/lib/Travel/Routing/DE/VRR.pm
@@ -9,22 +9,30 @@ use LWP::UserAgent;
 use XML::LibXML;
 
 use Exception::Class (
+	'Travel::Routing::DE::VRR::Exception',
 	'Travel::Routing::DE::VRR::Exception::Setup' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
 		description => 'invalid argument on setup',
 		fields      => [ 'option', 'have', 'want' ],
 	},
 	'Travel::Routing::DE::VRR::Exception::Net' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
 		description => 'could not submit POST request',
 		fields      => 'http_response',
 	},
-	'Travel::Routing::DE::VRR::Exception::NoData' =>
-	  { description => 'got no data to parse', },
+	'Travel::Routing::DE::VRR::Exception::NoData' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
+		description => 'got no data to parse',
+	},
 	'Travel::Routing::DE::VRR::Exception::Ambiguous' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
 		description => 'ambiguous input',
 		fields      => [ 'post_key', 'possibilities' ],
 	},
-	'Travel::Routing::DE::VRR::Exception::NoConnections' =>
-	  { description => 'got no connections', },
+	'Travel::Routing::DE::VRR::Exception::NoConnections' => {
+		isa         => 'Travel::Routing::DE::VRR::Exception',
+		description => 'got no connections',
+	},
 );
 
 our $VERSION = '1.3';
@@ -759,6 +767,9 @@ The following methods act like the arguments to B<new>. See there.
 
 =head1 DIAGNOSTICS
 
+When encountering an error, Travel::Routing::DE::VRR returns a
+Travel::Routing::DE::VRR::Exception object.
+
 Dies with a backtrace when anything goes wrong.
 
 =head1 DEPENDENCIES