diff --git a/src/main/java/org/hbp/mip/controllers/AppsApi.java b/src/main/java/org/hbp/mip/controllers/AppsApi.java
index f65802db10a5e394b476bc0288419fd87bb76f9a..7c2794d22dea301f2d7278145620a60c8238c62f 100644
--- a/src/main/java/org/hbp/mip/controllers/AppsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/AppsApi.java
@@ -10,6 +10,7 @@ import org.hbp.mip.model.App;
 import org.hbp.mip.model.User;
 import org.hbp.mip.model.Vote;
 import org.hbp.mip.utils.HibernateUtil;
+import org.hibernate.NonUniqueObjectException;
 import org.hibernate.Query;
 import org.hibernate.Session;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.ConstraintViolationException;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -82,7 +84,24 @@ public class AppsApi {
             session.save(vote);
 
             session.getTransaction().commit();
-        } catch (Exception e)
+        }
+        catch (ConstraintViolationException cve)
+        {
+            if(session.getTransaction() != null)
+            {
+                session.getTransaction().rollback();
+            }
+            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+        }
+        catch (NonUniqueObjectException nuoe)
+        {
+            if(session.getTransaction() != null)
+            {
+                session.getTransaction().rollback();
+            }
+            return new ResponseEntity<>(HttpStatus.CONFLICT);
+        }
+        catch (Exception e)
         {
             if(session.getTransaction() != null)
             {