From 6e2ee7605fc3f4b3882a1b00099d79d4b5f8c234 Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 11 Jul 2019 14:43:49 -0300 Subject: [PATCH] better handling of unknown exceptions --- src/main/java/carpet/script/Expression.java | 42 ++++++++++++++++++++- src/main/java/carpet/script/Fluff.java | 28 ++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/main/java/carpet/script/Expression.java b/src/main/java/carpet/script/Expression.java index 70a7c762..88ac9cac 100644 --- a/src/main/java/carpet/script/Expression.java +++ b/src/main/java/carpet/script/Expression.java @@ -506,6 +506,14 @@ public class Expression implements Cloneable { throw new ExpressionException(e, token, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, token, "Error while evaluating expression: "+exc.getMessage()); + } } }); } @@ -532,6 +540,14 @@ public class Expression implements Cloneable { throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } }); } @@ -557,6 +573,14 @@ public class Expression implements Cloneable { throw new ExpressionException(e, token, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, token, "Error while evaluating expression: "+exc.getMessage()); + } } }); } @@ -663,6 +687,14 @@ public class Expression implements Cloneable { throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } }); } @@ -725,7 +757,7 @@ public class Expression implements Cloneable { retVal = returnStatement.retval; } - catch (ThrowStatement throwStatement) + catch (ThrowStatement throwStatement) // might not be really necessary { retVal = throwStatement.retval; rethrow = true; @@ -738,6 +770,14 @@ public class Expression implements Cloneable { throw new ExpressionException(function_context, t, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } for (String global: globals) { LazyValue lv = newFrame.getVariable(global); diff --git a/src/main/java/carpet/script/Fluff.java b/src/main/java/carpet/script/Fluff.java index c8d55378..082ecfdd 100644 --- a/src/main/java/carpet/script/Fluff.java +++ b/src/main/java/carpet/script/Fluff.java @@ -108,6 +108,18 @@ public abstract class Fluff { throw new ExpressionException(e, t, exc.getMessage()); } + catch (ArithmeticException exc) + { + throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); + } + catch (Expression.ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } } @@ -154,6 +166,14 @@ public abstract class Fluff { throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); } + catch (Expression.ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } } @@ -182,6 +202,14 @@ public abstract class Fluff { throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); } + catch (Expression.ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } @Override