From fe08a43e0c831f315d049b91a56531617b27c584 Mon Sep 17 00:00:00 2001 From: David Huynh Date: Fri, 5 Nov 2010 04:26:10 +0000 Subject: [PATCH] FunctionCall and ControlCall should catch exceptions and wrap them as EvalError's. git-svn-id: http://google-refine.googlecode.com/svn/trunk@1777 7d457c2a-affb-35e4-300a-418c747d4874 --- main/src/com/google/refine/grel/ast/ControlCallExpr.java | 7 ++++++- main/src/com/google/refine/grel/ast/FunctionCallExpr.java | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/main/src/com/google/refine/grel/ast/ControlCallExpr.java b/main/src/com/google/refine/grel/ast/ControlCallExpr.java index a3494364b..d5aff75ca 100644 --- a/main/src/com/google/refine/grel/ast/ControlCallExpr.java +++ b/main/src/com/google/refine/grel/ast/ControlCallExpr.java @@ -35,6 +35,7 @@ package com.google.refine.grel.ast; import java.util.Properties; +import com.google.refine.expr.EvalError; import com.google.refine.expr.Evaluable; import com.google.refine.grel.Control; @@ -51,7 +52,11 @@ public class ControlCallExpr implements Evaluable { } public Object evaluate(Properties bindings) { - return _control.call(bindings, _args); + try { + return _control.call(bindings, _args); + } catch (Exception e) { + return new EvalError(e.toString()); + } } @Override diff --git a/main/src/com/google/refine/grel/ast/FunctionCallExpr.java b/main/src/com/google/refine/grel/ast/FunctionCallExpr.java index c44547ce2..06c216c06 100644 --- a/main/src/com/google/refine/grel/ast/FunctionCallExpr.java +++ b/main/src/com/google/refine/grel/ast/FunctionCallExpr.java @@ -35,6 +35,7 @@ package com.google.refine.grel.ast; import java.util.Properties; +import com.google.refine.expr.EvalError; import com.google.refine.expr.Evaluable; import com.google.refine.expr.ExpressionUtils; import com.google.refine.grel.Function; @@ -63,7 +64,11 @@ public class FunctionCallExpr implements Evaluable { } args[i] = v; } - return _function.call(bindings, args); + try { + return _function.call(bindings, args); + } catch (Exception e) { + return new EvalError(e.toString()); + } } public String toString() {