Quellcode durchsuchen

Exception handling in api layer

Andy Baugh vor 5 Jahren
Ursprung
Commit
13d3683e3b
1 geänderte Dateien mit 10 neuen und 3 gelöschten Zeilen
  1. 10 3
      cgi/api.cgi

+ 10 - 3
cgi/api.cgi

@@ -40,9 +40,16 @@ sub run {
         },
     };
     if( $loaded && $coderef ) {
-        my $data = $coderef->();
-        $ret->{'data'} = $data;
-        $ret->{'result'} = 1;
+        local $@;
+        my $data = eval { $coderef->() };
+        my $error = $@;
+        if($data) {
+            $ret->{'data'} = $data;
+            $ret->{'result'} = 1;
+        } else {
+            $ret->{'result'} = 0;
+            $ret->{'error'} = $error;
+        }
     } elsif( !$coderef ) {
         $ret->{'error'} = "No such function '$args->{'function'}' in $namespace";
         $ret->{'result'} = 0;