From 5e594533e5b66ee819c524274c9cc864b848be49 Mon Sep 17 00:00:00 2001 From: AlexandreFournel <39304175+AlexandreFournel@users.noreply.github.com> Date: Wed, 15 May 2019 15:11:37 +0200 Subject: [PATCH] Issue #27: change non-zero return codes to exceptions (#50) * Issue #27: change return code in Dotify to exception (also in Main) * Line 45, I replaced return 1 by throw e in Main.scala * in file MBT.scala, several System.exit(1) replaced by throw(error) * in file MBT.scala, System.exit changed by throw new file: src/main/java/modbat/mbt/NoTransitionException.java modified: src/main/scala/modbat/mbt/MBT.scala modified: src/main/scala/modbat/mbt/Dotify.scala modified: src/main/scala/modbat/mbt/Main.scala --- .gitignore | 1 + src/main/java/modbat/mbt/NoTransitionException.java | 7 +++++++ src/main/scala/modbat/mbt/MBT.scala | 5 +++-- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 src/main/java/modbat/mbt/NoTransitionException.java diff --git a/.gitignore b/.gitignore index de375750..d8407bcb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ build git-hash *.tar.gz .*.swp +.DS_Store # Gradle .gradle/ diff --git a/src/main/java/modbat/mbt/NoTransitionException.java b/src/main/java/modbat/mbt/NoTransitionException.java new file mode 100644 index 00000000..5e73c49a --- /dev/null +++ b/src/main/java/modbat/mbt/NoTransitionException.java @@ -0,0 +1,7 @@ +package modbat.mbt; + +class NoTransitionsException extends Exception { + NoTransitionsException(String message) { + super(message); + } +} diff --git a/src/main/scala/modbat/mbt/MBT.scala b/src/main/scala/modbat/mbt/MBT.scala index b9740b5b..5baac448 100644 --- a/src/main/scala/modbat/mbt/MBT.scala +++ b/src/main/scala/modbat/mbt/MBT.scala @@ -213,7 +213,7 @@ object MBT { } catch { case e: ClassNotFoundException => { Log.error("Class \"" + className + "\" not found.") - System.exit(1) + throw e } } } @@ -301,12 +301,13 @@ object MBT { // if modelInstance == null: initial model def launch(modelInstance: Model): MBT = { val model = mkModel(modelInstance) + if (Transition.pendingTransitions.isEmpty) { Log.error("Model " + model.getClass.getName + " has no transitions.") Log.error("Make sure at least one transition exists of type") Log.error(" \"a\" -> \"b\" := { code } // or, for an empty transition:") Log.error(" \"a\" -> \"b\" := skip") - System.exit(1) + throw new NoTransitionsException(model.getClass.getName) } val inst = new MBT(model, Transition.getTransitions) Transition.clear