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.