diff --git a/src/main/java/de/thm/arsnova/controller/AbstractController.java b/src/main/java/de/thm/arsnova/controller/AbstractController.java
index 3c379b3379ca5267bbdbd718aacbd8706a00bca9..3c86d4a0c69a501b154527c5402d8516708619fa 100644
--- a/src/main/java/de/thm/arsnova/controller/AbstractController.java
+++ b/src/main/java/de/thm/arsnova/controller/AbstractController.java
@@ -6,9 +6,11 @@ import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ResponseStatus;
 
+import de.thm.arsnova.exceptions.BadRequestException;
 import de.thm.arsnova.exceptions.ForbiddenException;
 import de.thm.arsnova.exceptions.NoContentException;
 import de.thm.arsnova.exceptions.NotFoundException;
+import de.thm.arsnova.exceptions.PreconditionFailedException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 
 public class AbstractController {
@@ -31,4 +33,14 @@ public class AbstractController {
 	@ExceptionHandler(NoContentException.class)
 	public void handleNoContentException(final Exception e, final HttpServletRequest request) {
 	}
+	
+	@ResponseStatus(HttpStatus.BAD_REQUEST)
+	@ExceptionHandler(BadRequestException.class)
+	public void handleBadRequestException(final Exception e, final HttpServletRequest request) {
+	}
+	
+	@ResponseStatus(HttpStatus.PRECONDITION_FAILED)
+	@ExceptionHandler(PreconditionFailedException.class)
+	public void handlePreconditionFailedException(final Exception e, final HttpServletRequest request) {
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/controller/FeedbackController.java b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
index 627c8fd47edbea568df3231bf94b7f1652aadc85..c1a4be8fafc62ff72ec7a9f707f54ba49c0701ef 100644
--- a/src/main/java/de/thm/arsnova/controller/FeedbackController.java
+++ b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
@@ -30,9 +30,11 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
 
 import de.thm.arsnova.entities.Feedback;
 import de.thm.arsnova.entities.User;
+import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.services.IFeedbackService;
 import de.thm.arsnova.services.IUserService;
 
@@ -61,8 +63,7 @@ public class FeedbackController extends AbstractController {
 		if (value != null && value >= Feedback.MIN_FEEDBACK_TYPE && value <= Feedback.MAX_FEEDBACK_TYPE) {
 			return value;
 		}
-		response.setStatus(HttpStatus.NOT_FOUND.value());
-		return null;
+		throw new NotFoundException();
 	}
 
 	@RequestMapping(value = "/session/{sessionkey}/feedbackcount", method = RequestMethod.GET)
@@ -85,6 +86,7 @@ public class FeedbackController extends AbstractController {
 
 	@RequestMapping(value = "/session/{sessionkey}/feedback", method = RequestMethod.POST)
 	@ResponseBody
+	@ResponseStatus(HttpStatus.CREATED)
 	public final Feedback postFeedback(
 			@PathVariable final String sessionkey,
 			@RequestBody final int value,
@@ -94,15 +96,11 @@ public class FeedbackController extends AbstractController {
 		if (feedbackService.saveFeedback(sessionkey, value, user)) {
 			Feedback feedback = feedbackService.getFeedback(sessionkey);
 			if (feedback != null) {
-				response.setStatus(HttpStatus.CREATED.value());
 				return feedback;
 			}
-
-			response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
-			return null;
+			throw new RuntimeException();
 		}
 
-		response.setStatus(HttpStatus.BAD_REQUEST.value());
-		return null;
+		throw new NotFoundException();
 	}
 }
diff --git a/src/main/java/de/thm/arsnova/controller/FoodVoteController.java b/src/main/java/de/thm/arsnova/controller/FoodVoteController.java
index 61269ef5a9b1163fdae90064536d100021be6982..f784b03abdde97ce364e520c253c40c20ecf256b 100644
--- a/src/main/java/de/thm/arsnova/controller/FoodVoteController.java
+++ b/src/main/java/de/thm/arsnova/controller/FoodVoteController.java
@@ -66,7 +66,4 @@ public class FoodVoteController extends AbstractController {
 	public final String getFoodVoteCount() {
 		return Integer.toString(foodService.getFoodVoteCount());
 	}
-	
-	
-
 }
diff --git a/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java b/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java
index 8001f67dc4405a1c7a32498dd573a848f9ead3ec..01a5ef239eb415b20e94dbbc5ae5f57fd6aee65b 100644
--- a/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java
+++ b/src/main/java/de/thm/arsnova/controller/QuestionByAudienceController.java
@@ -32,9 +32,12 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
 
 import de.thm.arsnova.entities.InterposedQuestion;
 import de.thm.arsnova.entities.InterposedReadingCount;
+import de.thm.arsnova.exceptions.BadRequestException;
+import de.thm.arsnova.exceptions.PreconditionFailedException;
 import de.thm.arsnova.services.IQuestionService;
 
 @Controller
@@ -84,23 +87,21 @@ public class QuestionByAudienceController extends AbstractController {
 
 	@RequestMapping(value = "/session/{sessionkey}/interposed", method = RequestMethod.POST)
 	@ResponseBody
+	@ResponseStatus(HttpStatus.CREATED)
 	public final void postInterposedQuestion(
 			@PathVariable final String sessionkey,
 			@RequestBody final InterposedQuestion question,
 			final HttpServletResponse response
 	) {
 		if (!sessionkey.equals(question.getSessionId())) {
-			response.setStatus(HttpStatus.PRECONDITION_FAILED.value());
-			return;
+			throw new PreconditionFailedException();
 		}
 
 		if (questionService.saveQuestion(question)) {
-			response.setStatus(HttpStatus.CREATED.value());
 			return;
 		}
 
-		response.setStatus(HttpStatus.BAD_REQUEST.value());
-		return;
+		throw new BadRequestException();
 	}
 	
 	@RequestMapping(value = "/session/{sessionkey}/interposed/{questionId}", method = RequestMethod.DELETE)
@@ -112,5 +113,4 @@ public class QuestionByAudienceController extends AbstractController {
 	) {
 		questionService.deleteQuestion(questionId);
 	}
-
 }
diff --git a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java
index 007ff95afbd01d64dcb196ebc31354924ba19a48..1dfea5429371117fe718dbc3f0c40d38da6f7a02 100644
--- a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java
+++ b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java
@@ -33,9 +33,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
 
 import de.thm.arsnova.entities.Answer;
 import de.thm.arsnova.entities.Question;
+import de.thm.arsnova.exceptions.BadRequestException;
+import de.thm.arsnova.exceptions.ForbiddenException;
+import de.thm.arsnova.exceptions.NoContentException;
 import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.services.IQuestionService;
 
@@ -59,8 +63,7 @@ public class QuestionByLecturerController extends AbstractController {
 			return question;
 		}
 
-		response.setStatus(HttpStatus.NOT_FOUND.value());
-		return null;
+		throw new NotFoundException();
 	}
 
 	@RequestMapping(
@@ -68,19 +71,17 @@ public class QuestionByLecturerController extends AbstractController {
 			method = RequestMethod.POST
 			)
 	@ResponseBody
+	@ResponseStatus(HttpStatus.CREATED)
 	public final Question postQuestion(
 			@RequestBody final Question question,
 			final HttpServletResponse response
 	) {
 
 		if (questionService.saveQuestion(question) != null) {
-			response.setStatus(HttpStatus.CREATED.value());
 			return question;
 		}
 
-		response.setStatus(HttpStatus.BAD_REQUEST.value());
-		
-		return null;
+		throw new BadRequestException();
 	}
 
 	@RequestMapping(
@@ -94,7 +95,7 @@ public class QuestionByLecturerController extends AbstractController {
 			@RequestBody final Question question,
 			final HttpServletResponse response
 	) {
-		response.setStatus(HttpStatus.NO_CONTENT.value());
+		throw new NoContentException();
 		
 		/* TODO: Not yet implemented! The following code has been copy-and-pasted from postQuestion */
 		/*
@@ -127,8 +128,7 @@ public class QuestionByLecturerController extends AbstractController {
 			@RequestBody final Question question,
 			final HttpServletResponse response
 	) {
-		/* TODO: Not yet implemented! */
-		response.setStatus(HttpStatus.NO_CONTENT.value());
+		throw new NoContentException();
 	}
 	
 
@@ -143,8 +143,7 @@ public class QuestionByLecturerController extends AbstractController {
 	) {
 		List<Question> questions = questionService.getSkillQuestions(sessionkey);
 		if (questions == null || questions.isEmpty()) {
-			response.setStatus(HttpStatus.NOT_FOUND.value());
-			return null;
+			throw new NotFoundException();
 		}
 		LOGGER.info(questions.toString());
 		return questions;
@@ -188,8 +187,7 @@ public class QuestionByLecturerController extends AbstractController {
 	) {
 		List<String> answers = questionService.getUnAnsweredQuestions(sessionkey);
 		if (answers == null || answers.isEmpty()) {
-			response.setStatus(HttpStatus.NO_CONTENT.value());
-			return null;
+			throw new NoContentException();
 		}
 		return answers;
 	}
diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index 885e076cb54b138ec75ea184806c87481230dc88..641d6c21dbe793440fc48eee95b5f183fc878bc5 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -32,10 +32,13 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
 
 import de.thm.arsnova.entities.LoggedIn;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
+import de.thm.arsnova.exceptions.NoContentException;
+import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.services.ISessionService;
 import de.thm.arsnova.services.IUserService;
 
@@ -58,6 +61,7 @@ public class SessionController extends AbstractController {
 
 	@RequestMapping(value = "/session/{sessionkey}/online", method = RequestMethod.POST)
 	@ResponseBody
+	@ResponseStatus(HttpStatus.CREATED)
 	public final LoggedIn registerAsOnlineUser(
 			@PathVariable final String sessionkey,
 			final HttpServletResponse response
@@ -65,12 +69,10 @@ public class SessionController extends AbstractController {
 		User user = userService.getCurrentUser();
 		LoggedIn loggedIn = sessionService.registerAsOnlineUser(user, sessionkey);
 		if (loggedIn != null) {
-			response.setStatus(HttpStatus.CREATED.value());
 			return loggedIn;
 		}
 
-		response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
-		return null;
+		throw new RuntimeException();
 	}
 
 	@RequestMapping(value = "/session/{sessionkey}/activeusercount", method = RequestMethod.GET)
@@ -84,10 +86,10 @@ public class SessionController extends AbstractController {
 
 	@RequestMapping(value = "/session", method = RequestMethod.POST)
 	@ResponseBody
+	@ResponseStatus(HttpStatus.CREATED)
 	public final Session postNewSession(@RequestBody final Session session, final HttpServletResponse response) {
 		Session newSession = sessionService.saveSession(session);
 		if (session != null) {
-			response.setStatus(HttpStatus.CREATED.value());
 			return newSession;
 		}
 
@@ -100,13 +102,11 @@ public class SessionController extends AbstractController {
 	public final List<Session> getMySession(final HttpServletResponse response) {
 		String username = userService.getCurrentUser().getUsername();
 		if (username == null) {
-			response.setStatus(HttpStatus.NOT_FOUND.value());
-			return null;
+			throw new NotFoundException();
 		}
 		List<Session> sessions = sessionService.getMySessions(username);
 		if (sessions == null || sessions.isEmpty()) {
-			response.setStatus(HttpStatus.NOT_FOUND.value());
-			return null;
+			throw new NotFoundException();
 		}
 		return sessions;
 	}
@@ -116,8 +116,7 @@ public class SessionController extends AbstractController {
 	public final List<Session> getMyVisitedSession(final HttpServletResponse response) {
 		List<Session> sessions = sessionService.getMyVisitedSessions(userService.getCurrentUser());
 		if (sessions == null || sessions.isEmpty()) {
-			response.setStatus(HttpStatus.NO_CONTENT.value());
-			return null;
+			throw new NoContentException();
 		}
 		return sessions;
 	}
diff --git a/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java b/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2289bf5157b2f9d60e0467023113a4f2a5fa9c5
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
@@ -0,0 +1,5 @@
+package de.thm.arsnova.exceptions;
+
+public class BadRequestException extends RuntimeException {
+	private static final long serialVersionUID = 1L;
+}
diff --git a/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java b/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
new file mode 100644
index 0000000000000000000000000000000000000000..827f0c5bf6899a518217abae5ba93effebe78699
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
@@ -0,0 +1,5 @@
+package de.thm.arsnova.exceptions;
+
+public class PreconditionFailedException extends RuntimeException {
+	private static final long serialVersionUID = 1L;
+}