From 5ac4b67b7eba39bbb098b9b184dcacffe99baa2a Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 2 Aug 2016 21:45:09 +0300 Subject: Add division by zero error --- src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java | 9 ++++++++- src/main/com/jantuomi/tunkki/exception/TunkkiError.java | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java index aed971a..0d233b4 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java @@ -22,7 +22,14 @@ public class DivisionNode extends BinaryOperatorNode { Datatype operand1 = lhs.evaluate(); Datatype operand2 = rhs.evaluate(); - Datatype result = operand1.divide(operand2); + Datatype result; + try { + result = operand1.divide(operand2); + } + catch (ArithmeticException ex) { + throw new TunkkiError(TunkkiError.ExceptionType.DivisionByZeroError, getLine()); + } + if (result != null) { return result; } else { diff --git a/src/main/com/jantuomi/tunkki/exception/TunkkiError.java b/src/main/com/jantuomi/tunkki/exception/TunkkiError.java index affc353..b5a36a7 100644 --- a/src/main/com/jantuomi/tunkki/exception/TunkkiError.java +++ b/src/main/com/jantuomi/tunkki/exception/TunkkiError.java @@ -20,7 +20,9 @@ public class TunkkiError extends Exception { UndeclaredSymbolError, IncludeError, GeneralError, - CastError, NadaError + CastError, + DivisionByZeroError, + NadaError } private static Map errorTexts = new HashMap<>(); @@ -36,6 +38,7 @@ public class TunkkiError extends Exception { errorTexts.put(ExceptionType.GeneralError, "%s"); errorTexts.put(ExceptionType.NadaError, "Can't do operation with a nada value."); errorTexts.put(ExceptionType.CastError, "Illegal cast to type %s from value %s."); + errorTexts.put(ExceptionType.DivisionByZeroError, "Division by zero."); } private ExceptionType exceptionType; -- cgit v1.3