diff --git a/src/main/java/de/thm/arsnova/controller/FeedbackController.java b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
index 4e8b4f79d419619d612a7bd8e1d8add12d26cf68..2f3e3b16c7b509ee4336f6dda7805ef240245436 100644
--- a/src/main/java/de/thm/arsnova/controller/FeedbackController.java
+++ b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
@@ -94,14 +94,9 @@ public class FeedbackController extends AbstractController {
 			@RequestBody final int value
 			) {
 		User user = userService.getCurrentUser();
-		if (feedbackService.saveFeedback(sessionkey, value, user)) {
-			Feedback feedback = feedbackService.getFeedback(sessionkey);
-			if (feedback != null) {
-				return feedback;
-			}
-			throw new RuntimeException();
-		}
+		feedbackService.saveFeedback(sessionkey, value, user);
+		Feedback feedback = feedbackService.getFeedback(sessionkey);
 
-		throw new NotFoundException();
+		return feedback;
 	}
 }
diff --git a/src/main/java/de/thm/arsnova/controller/WelcomeController.java b/src/main/java/de/thm/arsnova/controller/WelcomeController.java
index 9313f5ef9d652c934da711ed3ded1328463a0af2..c036abda8e3be9e8068340da46af383a9baf5969 100644
--- a/src/main/java/de/thm/arsnova/controller/WelcomeController.java
+++ b/src/main/java/de/thm/arsnova/controller/WelcomeController.java
@@ -86,13 +86,13 @@ public class WelcomeController extends AbstractController {
 		) {
 		/* Block requests from the server itself to prevent DoS attacks caused by request loops */
 		if ("127.0.0.1".equals(request.getRemoteAddr())) {
-			throw new BadRequestException();
+			throw new BadRequestException("Access to localhost not allowed.");
 		}
 		/* Block requests to servers in private networks */
 		try {
 			final InetAddress addr = InetAddress.getByName(new URL(url).getHost());
 			if (addr.isSiteLocalAddress()) {
-				throw new BadRequestException();
+				throw new BadRequestException("Access to site-local addresses not allowed.");
 			}
 		} catch (UnknownHostException | MalformedURLException e) {
 			throw new BadRequestException();
diff --git a/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java b/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
index c9b728742518288d38a567ed398dab1677c6de6a..b7e80b833cb0f6053e9d0c1f77fe63813272cdd9 100644
--- a/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
@@ -5,4 +5,20 @@ package de.thm.arsnova.exceptions;
  */
 public class BadRequestException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
+
+	public BadRequestException() {
+		super();
+	}
+
+	public BadRequestException(String message) {
+		super(message);
+	}
+
+	public BadRequestException(Throwable e) {
+		super(e);
+	}
+
+	public BadRequestException(String message, Throwable e) {
+		super(message, e);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java b/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java
index 05ed5bf3bb633258cdecade7a5ec1621bfe76752..05b21dab60ba76f181a0343c4420d7129814e966 100644
--- a/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java
@@ -5,4 +5,20 @@ package de.thm.arsnova.exceptions;
  */
 public class ForbiddenException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
+
+	public ForbiddenException() {
+		super();
+	}
+
+	public ForbiddenException(String message) {
+		super(message);
+	}
+
+	public ForbiddenException(Throwable e) {
+		super(e);
+	}
+
+	public ForbiddenException(String message, Throwable e) {
+		super(message, e);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/NoContentException.java b/src/main/java/de/thm/arsnova/exceptions/NoContentException.java
index f0de3c46c0f629be82b65e8b425d44c410c6e1c6..f3f7e81649b77d04bf4431b45aeebd857b71eff8 100644
--- a/src/main/java/de/thm/arsnova/exceptions/NoContentException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/NoContentException.java
@@ -5,4 +5,20 @@ package de.thm.arsnova.exceptions;
  */
 public class NoContentException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
+
+	public NoContentException() {
+		super();
+	}
+
+	public NoContentException(String message) {
+		super(message);
+	}
+
+	public NoContentException(Throwable e) {
+		super(e);
+	}
+
+	public NoContentException(String message, Throwable e) {
+		super(message, e);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java b/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java
index 0937ebde41a488665a864a5aac53cbc295fd3af5..a0a12b25add162e74557c33502cea8dcc3697b90 100644
--- a/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java
@@ -5,4 +5,20 @@ package de.thm.arsnova.exceptions;
  */
 public class NotFoundException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
+
+	public NotFoundException() {
+		super();
+	}
+
+	public NotFoundException(String message) {
+		super(message);
+	}
+
+	public NotFoundException(Throwable e) {
+		super(e);
+	}
+
+	public NotFoundException(String message, Throwable e) {
+		super(message, e);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java b/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java
index ed5e30f6516458b30faa96adc3010389e6baf57e..93f7ed795537fbd2a263059c7add9bc3c3b1f3b7 100644
--- a/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java
@@ -5,4 +5,20 @@ package de.thm.arsnova.exceptions;
  */
 public class NotImplementedException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
+
+	public NotImplementedException() {
+		super();
+	}
+
+	public NotImplementedException(String message) {
+		super(message);
+	}
+
+	public NotImplementedException(Throwable e) {
+		super(e);
+	}
+
+	public NotImplementedException(String message, Throwable e) {
+		super(message, e);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java b/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java
index 6562a149b6ddf8e5dc7521ae70ec54165b1be75a..9233b58f25fd465979943a782c9a9d4fced27e25 100644
--- a/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java
@@ -5,4 +5,20 @@ package de.thm.arsnova.exceptions;
  */
 public class PayloadTooLargeException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
+
+	public PayloadTooLargeException() {
+		super();
+	}
+
+	public PayloadTooLargeException(String message) {
+		super(message);
+	}
+
+	public PayloadTooLargeException(Throwable e) {
+		super(e);
+	}
+
+	public PayloadTooLargeException(String message, Throwable e) {
+		super(message, e);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java b/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
index 423b3a4f88440f23c6413f02520d17a11b4f5d5b..e14d30c7edd66c8bc7dbd669144eda48a4a64d32 100644
--- a/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
@@ -5,4 +5,20 @@ package de.thm.arsnova.exceptions;
  */
 public class PreconditionFailedException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
+
+	public PreconditionFailedException() {
+		super();
+	}
+
+	public PreconditionFailedException(String message) {
+		super(message);
+	}
+
+	public PreconditionFailedException(Throwable e) {
+		super(e);
+	}
+
+	public PreconditionFailedException(String message, Throwable e) {
+		super(message, e);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java b/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java
index 7a4c3dc8a2ef623705b780e29c7d03c167f8fdd9..f6a91249b2681fea1bd816b0b9dadde1ab86748a 100644
--- a/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java
@@ -5,4 +5,20 @@ package de.thm.arsnova.exceptions;
  */
 public class UnauthorizedException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
+
+	public UnauthorizedException() {
+		super();
+	}
+
+	public UnauthorizedException(String message) {
+		super(message);
+	}
+
+	public UnauthorizedException(Throwable e) {
+		super(e);
+	}
+
+	public UnauthorizedException(String message, Throwable e) {
+		super(message, e);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index 5da25855f1136c4d30db90e2125d8cdbf0da8acf..77a22e5b3999fb7d0d945a06e1b53c07fc0097a3 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -174,7 +174,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 		if (connectorClient != null && session.isCourseSession()) {
 			final String courseid = session.getCourseId();
 			if (!connectorClient.getMembership(user.getUsername(), courseid).isMember()) {
-				throw new ForbiddenException();
+				throw new ForbiddenException("User is no course member.");
 			}
 		}
 
@@ -205,15 +205,15 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 		}
 		if (!session.isActive()) {
 			if (user.hasRole(UserSessionService.Role.STUDENT)) {
-				throw new ForbiddenException();
+				throw new ForbiddenException("User is not session creator.");
 			} else if (user.hasRole(UserSessionService.Role.SPEAKER) && !session.isCreator(user)) {
-				throw new ForbiddenException();
+				throw new ForbiddenException("User is not session creator.");
 			}
 		}
 		if (connectorClient != null && session.isCourseSession()) {
 			final String courseid = session.getCourseId();
 			if (!connectorClient.getMembership(user.getUsername(), courseid).isMember()) {
-				throw new ForbiddenException();
+				throw new ForbiddenException("User is no course member.");
 			}
 		}
 		return session;
@@ -336,7 +336,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 		final Session session = databaseDao.getSessionFromKeyword(sessionkey);
 		final User user = userService.getCurrentUser();
 		if (!session.isCreator(user)) {
-			throw new ForbiddenException();
+			throw new ForbiddenException("User is not session creator.");
 		}
 		session.setActive(lock);
 		this.publisher.publishEvent(new StatusSessionEvent(this, session));
@@ -374,7 +374,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 	public Session changeSessionCreator(String sessionkey, String newCreator) {
 		final Session existingSession = databaseDao.getSessionFromKeyword(sessionkey);
 		if (existingSession == null) {
-			throw new RuntimeException("Could not load session " + sessionkey + ".");
+			throw new NullPointerException("Could not load session " + sessionkey + ".");
 		}
 		return databaseDao.changeSessionCreator(existingSession, newCreator);
 	}
@@ -424,7 +424,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 		final User user = userService.getCurrentUser();
 		final SessionInfo info = databaseDao.importSession(user, importSession);
 		if (info == null) {
-			throw new RuntimeException("Could not import session.");
+			throw new NullPointerException("Could not import session.");
 		}
 		return info;
 	}
@@ -460,7 +460,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 		final Session session = databaseDao.getSessionFromKeyword(sessionkey);
 		final User user = userService.getCurrentUser();
 		if (!session.isCreator(user)) {
-			throw new UnauthorizedException();
+			throw new UnauthorizedException("User is not session creator.");
 		}
 		session.setFeatures(features);
 		this.publisher.publishEvent(new FeatureChangeEvent(this, session));
@@ -472,7 +472,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 		final Session session = databaseDao.getSessionFromKeyword(sessionkey);
 		final User user = userService.getCurrentUser();
 		if (!session.isCreator(user)) {
-			throw new UnauthorizedException();
+			throw new UnauthorizedException("User is not session creator.");
 		}
 		if (!lock) {
 			feedbackService.cleanFeedbackVotesInSession(sessionkey, 0);
@@ -488,7 +488,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 		final Session session = databaseDao.getSessionFromKeyword(sessionkey);
 		final User user = userService.getCurrentUser();
 		if (!session.isCreator(user)) {
-			throw new UnauthorizedException();
+			throw new UnauthorizedException("User is not session creator.");
 		}
 		session.setFlipFlashcards(flip);
 		this.publisher.publishEvent(new FlipFlashcardsEvent(this, session));
@@ -500,7 +500,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 			if (session.getPpLogo().startsWith("http")) {
 				final String base64ImageString = imageUtils.encodeImageToString(session.getPpLogo());
 				if (base64ImageString == null) {
-					throw new BadRequestException();
+					throw new BadRequestException("Could not encode image.");
 				}
 				session.setPpLogo(base64ImageString);
 			}
@@ -508,8 +508,7 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 			// base64 adds offset to filesize, formula taken from: http://en.wikipedia.org/wiki/Base64#MIME
 			final int fileSize = (int) ((session.getPpLogo().length() - 814) / 1.37);
 			if (fileSize > uploadFileSizeByte) {
-				logger.error("Could not save file. File is too large with {} Byte.", fileSize);
-				throw new PayloadTooLargeException();
+				throw new PayloadTooLargeException("Could not save file. File is too large with " + fileSize + " Byte.");
 			}
 		}
 	}