diff --git a/src/main/java/teetime/framework/AbstractConsumerStage.java b/src/main/java/teetime/framework/AbstractConsumerStage.java index 1cc3bdb0a9fbd55ecb791d603f2ca87ea20abb43..88605f5c825c31d06ae53198a6c128b1c05cb763 100644 --- a/src/main/java/teetime/framework/AbstractConsumerStage.java +++ b/src/main/java/teetime/framework/AbstractConsumerStage.java @@ -1,5 +1,6 @@ package teetime.framework; +import teetime.framework.exceptionHandling.StageException; import teetime.framework.idle.IdleStrategy; import teetime.framework.idle.YieldStrategy; @@ -20,7 +21,11 @@ public abstract class AbstractConsumerStage<I> extends AbstractStage { returnNoElement(); } - this.execute(element); + try { + this.execute(element); + } catch (Exception e) { + throw new StageException(e, this); + } } protected abstract void execute(I element); diff --git a/src/main/java/teetime/framework/AbstractProducerStage.java b/src/main/java/teetime/framework/AbstractProducerStage.java index e34f6705c6fb7728a6e68f4a16405d477a2aa15e..2e22460f47f810b6100868dc915d4190daa72bbd 100644 --- a/src/main/java/teetime/framework/AbstractProducerStage.java +++ b/src/main/java/teetime/framework/AbstractProducerStage.java @@ -1,5 +1,7 @@ package teetime.framework; +import teetime.framework.exceptionHandling.StageException; + /** * The <code>ProducerStage</code> produces at least one element at each execution.<br> * @@ -19,7 +21,11 @@ public abstract class AbstractProducerStage<O> extends AbstractStage { @Override public void executeWithPorts() { - this.execute(); + try { + this.execute(); + } catch (Exception e) { + throw new StageException(e, this); + } } @Override diff --git a/src/main/java/teetime/framework/RunnableStage.java b/src/main/java/teetime/framework/RunnableStage.java index b79b8d2da10441038fec0618aa4c60977e111f8d..ed98055c298e878ebf21cf7613be5dd23292b09a 100644 --- a/src/main/java/teetime/framework/RunnableStage.java +++ b/src/main/java/teetime/framework/RunnableStage.java @@ -3,6 +3,8 @@ package teetime.framework; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import teetime.framework.exceptionHandling.StageException; + abstract class RunnableStage implements Runnable { protected final Stage stage; @@ -22,7 +24,11 @@ abstract class RunnableStage implements Runnable { beforeStageExecution(); do { - executeStage(); + try { + executeStage(); + } catch (StageException e) { + // TODO: handle exception + } } while (!this.stage.shouldBeTerminated()); afterStageExecution(); diff --git a/src/main/java/teetime/framework/StageException.java b/src/main/java/teetime/framework/exceptionHandling/StageException.java similarity index 84% rename from src/main/java/teetime/framework/StageException.java rename to src/main/java/teetime/framework/exceptionHandling/StageException.java index 3f6c2b25989e219b64588f4e83202c845baee6fc..9c8ac69a3daff664a90bb5b6922bc3e10a41e85c 100644 --- a/src/main/java/teetime/framework/StageException.java +++ b/src/main/java/teetime/framework/exceptionHandling/StageException.java @@ -1,10 +1,12 @@ -package teetime.framework; +package teetime.framework.exceptionHandling; + +import teetime.framework.Stage; /** * Represents an Exception, which is thrown by stages, if uncatched exceptions are thrown. * */ -public class StageException extends Exception { +public class StageException extends RuntimeException { /** * Generated UID diff --git a/src/main/java/teetime/framework/StageExceptionListener.java b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java similarity index 90% rename from src/main/java/teetime/framework/StageExceptionListener.java rename to src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java index 5d43088de5b31c23422a04c36da73e9ebc0ef02f..f5ebc5d345dc850a0070b1518c32c4241e14b3b3 100644 --- a/src/main/java/teetime/framework/StageExceptionListener.java +++ b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java @@ -1,4 +1,6 @@ -package teetime.framework; +package teetime.framework.exceptionHandling; + +import teetime.framework.Stage; /** * Represent a minimalistic StageExceptionListener. Listener which extend from this one, must a least implement this functionality.