diff --git a/lib/AccountManager/Metadata.pm b/lib/AccountManager/Metadata.pm
index f5d6a678f76c62ef74ba8fdf4e6e067487e07405..6be11388a3f1e1e7913717e9cc280fa3a770f0a1 100644
--- a/lib/AccountManager/Metadata.pm
+++ b/lib/AccountManager/Metadata.pm
@@ -3,6 +3,7 @@ package AccountManager::Metadata;
 use Mojo::Base -base;
 
 use English qw(-no_match_vars);
+use Syntax::Keyword::Try;
 use XML::LibXML qw(:libxml);
 
 sub new {
@@ -13,8 +14,11 @@ sub new {
     die "non-readable file $args{file}" unless -r $args{file};
 
     my $doc;
-    eval { $doc = XML::LibXML->load_xml(location => $args{file}); };
-    die "Failed to parse file: $EVAL_ERROR" if $EVAL_ERROR;
+    try {
+        $doc = XML::LibXML->load_xml(location => $args{file});
+    } catch($error) {
+        die "Failed to parse file: $error";
+    }
 
     my $root = $doc->documentElement();
     my $type = $root->nodeName();