From 9d0ac87a026fcea667daa105ec84468088420cc0 Mon Sep 17 00:00:00 2001
From: hansen <dominik_hansen@web.de>
Date: Tue, 11 Nov 2014 10:50:09 +0100
Subject: [PATCH] updated exception handler

---
 .../java/de/tla2bAst/ExpressionTranslator.java  | 17 ++++++++---------
 src/main/java/de/tla2bAst/Translator.java       |  7 ++++++-
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/main/java/de/tla2bAst/ExpressionTranslator.java b/src/main/java/de/tla2bAst/ExpressionTranslator.java
index 0e3397f..e809a79 100644
--- a/src/main/java/de/tla2bAst/ExpressionTranslator.java
+++ b/src/main/java/de/tla2bAst/ExpressionTranslator.java
@@ -46,7 +46,7 @@ public class ExpressionTranslator implements SyntaxTreeConstants {
 		this.translator = translator;
 	}
 
-	public void parse() {
+	public void parse() throws de.tla2b.exceptions.FrontEndException {
 		String dir = System.getProperty("java.io.tmpdir");
 		ToolIO.setUserDir(dir);
 
@@ -66,7 +66,9 @@ public class ExpressionTranslator implements SyntaxTreeConstants {
 			fw.write(module);
 			fw.close();
 		} catch (IOException e) {
-			throw new RuntimeException("Can not create file temporary file in directory '" + dir + "'");
+			throw new de.tla2b.exceptions.FrontEndException(
+					"Can not create file temporary file in directory '" + dir
+							+ "'");
 		}
 
 		SpecObj spec = parseModuleWithoutSemanticAnalyse(moduleName, module);
@@ -96,8 +98,7 @@ public class ExpressionTranslator implements SyntaxTreeConstants {
 			fw.close();
 			tempFile.deleteOnExit();
 		} catch (IOException e) {
-			e.printStackTrace();
-			throw new RuntimeException(e.getMessage());
+			throw new de.tla2b.exceptions.FrontEndException(e.getMessage());
 		}
 		ToolIO.reset();
 
@@ -107,7 +108,7 @@ public class ExpressionTranslator implements SyntaxTreeConstants {
 		try {
 			moduleNode = parseModule(moduleName, sb.toString());
 		} catch (de.tla2b.exceptions.FrontEndException e) {
-			throw new RuntimeException(e.getLocalizedMessage());
+			throw new de.tla2b.exceptions.FrontEndException(e.getLocalizedMessage());
 		}
 	}
 
@@ -154,19 +155,17 @@ public class ExpressionTranslator implements SyntaxTreeConstants {
 			SANY.frontEndMain(spec, moduleName, ToolIO.out);
 		} catch (FrontEndException e) {
 			// Error in Frontend, should never happens
-			return null;
+			throw new de.tla2b.exceptions.FrontEndException(
+					"Frontend error! This should never happen.", spec);
 		}
 
 		if (spec.parseErrors.isFailure()) {
-			// String[] m = ToolIO.getAllMessages();
 			String message = module + "\n\n" + spec.parseErrors;
-			// System.out.println(spec.parseErrors);
 			message += allMessagesToString(ToolIO.getAllMessages());
 			throw new de.tla2b.exceptions.FrontEndException(message, spec);
 		}
 
 		if (spec.semanticErrors.isFailure()) {
-			// String[] m = ToolIO.getAllMessages();
 			String message = module + "\n\n" + spec.semanticErrors;
 			message += allMessagesToString(ToolIO.getAllMessages());
 			throw new de.tla2b.exceptions.FrontEndException(message, spec);
diff --git a/src/main/java/de/tla2bAst/Translator.java b/src/main/java/de/tla2bAst/Translator.java
index 83642e0..437729e 100644
--- a/src/main/java/de/tla2bAst/Translator.java
+++ b/src/main/java/de/tla2bAst/Translator.java
@@ -357,7 +357,12 @@ public class Translator implements TranslationGlobals {
 	public static Start translateTlaExpression(String tlaExpression) {
 		ExpressionTranslator expressionTranslator = new ExpressionTranslator(
 				tlaExpression);
-		expressionTranslator.parse();
+		try {
+			expressionTranslator.parse();
+		} catch (FrontEndException e) {
+			System.out.println(e.getMessage());
+			throw new RuntimeException();
+		}
 		expressionTranslator.translate();
 		return expressionTranslator.getBExpressionParseUnit();
 	}
-- 
GitLab