From 68e0a80b984b57782e9a68874987b1c26d5aba9c Mon Sep 17 00:00:00 2001 From: Joachim Klein Date: Fri, 7 Aug 2015 09:42:45 +0000 Subject: [PATCH] GUI computation threads: Catch more errors (e.g. CuddOutOfMemoryException) and use the new error(Exception) handling git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10483 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/userinterface/GUIPrism.java | 5 +++++ .../model/computation/BuildModelThread.java | 4 ++-- .../computation/ComputeSteadyStateThread.java | 4 ++-- .../computation/ComputeTransientThread.java | 4 ++-- .../computation/ExportBuiltModelThread.java | 4 ++-- .../userinterface/properties/GUIExperiment.java | 16 ++++++++-------- .../computation/ExportResultsThread.java | 2 +- .../properties/computation/ModelCheckThread.java | 4 ++-- .../computation/SimulateModelCheckThread.java | 4 ++-- 9 files changed, 26 insertions(+), 21 deletions(-) diff --git a/prism/src/userinterface/GUIPrism.java b/prism/src/userinterface/GUIPrism.java index 22514050..ef59a222 100644 --- a/prism/src/userinterface/GUIPrism.java +++ b/prism/src/userinterface/GUIPrism.java @@ -97,6 +97,11 @@ public class GUIPrism extends JFrame System.err.println("Error: "+e.getMessage()); System.exit(1); } + catch(jdd.JDD.CuddOutOfMemoryException e) + { + System.err.println("Error: "+e.getMessage()); + System.exit(1); + } } /** diff --git a/prism/src/userinterface/model/computation/BuildModelThread.java b/prism/src/userinterface/model/computation/BuildModelThread.java index 51a17527..6c1e4de6 100644 --- a/prism/src/userinterface/model/computation/BuildModelThread.java +++ b/prism/src/userinterface/model/computation/BuildModelThread.java @@ -65,8 +65,8 @@ public class BuildModelThread extends GUIComputationThread // Do build try { prism.buildModel(); - } catch (PrismException e) { - error(e.getMessage()); + } catch (Exception e) { + error(e); SwingUtilities.invokeLater(new Runnable() { public void run() diff --git a/prism/src/userinterface/model/computation/ComputeSteadyStateThread.java b/prism/src/userinterface/model/computation/ComputeSteadyStateThread.java index caedfc99..408e2202 100644 --- a/prism/src/userinterface/model/computation/ComputeSteadyStateThread.java +++ b/prism/src/userinterface/model/computation/ComputeSteadyStateThread.java @@ -76,8 +76,8 @@ public class ComputeSteadyStateThread extends GUIComputationThread // Do Computation try { prism.doSteadyState(exportType, exportFile, null); - } catch (PrismException e) { - error(e.getMessage()); + } catch (Exception e) { + error(e); SwingUtilities.invokeLater(new Runnable() { public void run() diff --git a/prism/src/userinterface/model/computation/ComputeTransientThread.java b/prism/src/userinterface/model/computation/ComputeTransientThread.java index df9d53bc..1cfbe8f3 100644 --- a/prism/src/userinterface/model/computation/ComputeTransientThread.java +++ b/prism/src/userinterface/model/computation/ComputeTransientThread.java @@ -78,8 +78,8 @@ public class ComputeTransientThread extends GUIComputationThread // Do Computation try { prism.doTransient(transientTime, exportType, exportFile, null); - } catch (PrismException e) { - error(e.getMessage()); + } catch (Exception e) { + error(e); SwingUtilities.invokeLater(new Runnable() { public void run() diff --git a/prism/src/userinterface/model/computation/ExportBuiltModelThread.java b/prism/src/userinterface/model/computation/ExportBuiltModelThread.java index 9be17a43..a91a260a 100644 --- a/prism/src/userinterface/model/computation/ExportBuiltModelThread.java +++ b/prism/src/userinterface/model/computation/ExportBuiltModelThread.java @@ -112,8 +112,8 @@ public class ExportBuiltModelThread extends GUIComputationThread } }); return; - } catch (PrismException e2) { - error(e2.getMessage()); + } catch (Exception e2) { + error(e2); SwingUtilities.invokeAndWait(new Runnable() { public void run() diff --git a/prism/src/userinterface/properties/GUIExperiment.java b/prism/src/userinterface/properties/GUIExperiment.java index dc2268e6..dcdef5ba 100644 --- a/prism/src/userinterface/properties/GUIExperiment.java +++ b/prism/src/userinterface/properties/GUIExperiment.java @@ -230,9 +230,9 @@ public class GUIExperiment try { definedMFConstants = undefinedConstants.getMFConstantValues(); prism.setPRISMModelConstants(definedMFConstants); - } catch (PrismException e) { + } catch (Exception e) { // in case of error, report it (in log only), store as result, and go on to the next model - errorLog(e.getMessage()); + errorLog(e); setMultipleErrors(definedMFConstants, null, e); undefinedConstants.iterateModel(); continue; @@ -244,9 +244,9 @@ public class GUIExperiment info = null; info = GUISimulationPicker.defineSimulationWithDialog(guiProp.getGUI(), propertyToCheck.getExpression(), prism.getPRISMModel(), "(" + definedMFConstants + ")"); - } catch (PrismException e) { + } catch (Exception e) { // in case of error, report it (in log only), store as result, and go on to the next model - errorLog(e.getMessage()); + errorLog(e); setMultipleErrors(definedMFConstants, null, e); undefinedConstants.iterateModel(); continue; @@ -284,9 +284,9 @@ public class GUIExperiment // update progress meter // (all properties simulated simultaneously so can't get more accurate feedback at the moment anyway) table.progressChanged(); - } catch (PrismException e) { + } catch (Exception e) { // in case of error, report it (in log only), store as result, and go on to the next model - errorLog(e.getMessage()); + errorLog(e); setMultipleErrors(definedMFConstants, null, e); undefinedConstants.iterateModel(); continue; @@ -322,9 +322,9 @@ public class GUIExperiment res = prism.modelCheckSimulator(propertiesFile, propertyToCheck.getExpression(), definedPFConstants, initialState, info.getMaxPathLength(), info.createSimulationMethod()); } - } catch (PrismException e) { + } catch (Exception e) { // in case of error, report it (in log only), store exception as the result and proceed - errorLog(e.getMessage()); + errorLog(e); res = new Result(e); } // store result of model checking diff --git a/prism/src/userinterface/properties/computation/ExportResultsThread.java b/prism/src/userinterface/properties/computation/ExportResultsThread.java index 80a5562f..d5df543d 100644 --- a/prism/src/userinterface/properties/computation/ExportResultsThread.java +++ b/prism/src/userinterface/properties/computation/ExportResultsThread.java @@ -106,7 +106,7 @@ public class ExportResultsThread extends Thread out.flush(); out.close(); } - catch (IOException e) { + catch (Exception e) { SwingUtilities.invokeLater(new Runnable() { public void run() diff --git a/prism/src/userinterface/properties/computation/ModelCheckThread.java b/prism/src/userinterface/properties/computation/ModelCheckThread.java index b832ae6e..047fc567 100644 --- a/prism/src/userinterface/properties/computation/ModelCheckThread.java +++ b/prism/src/userinterface/properties/computation/ModelCheckThread.java @@ -104,9 +104,9 @@ public class ModelCheckThread extends GUIComputationThread // Do model checking try { result = prism.modelCheck(propertiesFile, propertiesFile.getPropertyObject(i)); - } catch (PrismException e) { + } catch (Exception e) { result = new Result(e); - error(e.getMessage()); + error(e); } ic.interrupt(); try { diff --git a/prism/src/userinterface/properties/computation/SimulateModelCheckThread.java b/prism/src/userinterface/properties/computation/SimulateModelCheckThread.java index 3c66418e..078feda9 100644 --- a/prism/src/userinterface/properties/computation/SimulateModelCheckThread.java +++ b/prism/src/userinterface/properties/computation/SimulateModelCheckThread.java @@ -117,10 +117,10 @@ public class SimulateModelCheckThread extends GUIComputationThread // do simulation results = prism.modelCheckSimulatorSimultaneously(pf, properties, definedPFConstants, initialState, maxPathLength, method); method.reset(); - } catch (PrismException e) { + } catch (Exception e) { // in the case of an error which affects all props, store/report it resultError = e; - error(e.getMessage()); + error(e); } //after collecting the results stop all of the clock icons for (int i = 0; i < clkThreads.size(); i++) {