diff --git a/Controller/UploadController.php b/Controller/UploadController.php
index 6f75b842dbac5e7a9b9fe9c0dfd7183f66046dae..8f5908354cad2edbd1110759d6677790259334fa 100644
--- a/Controller/UploadController.php
+++ b/Controller/UploadController.php
@@ -8,6 +8,7 @@
 namespace Irstea\FileUploadBundle\Controller;
 
 use Irstea\FileUploadBundle\Entity\UploadedFile;
+use Irstea\FileUploadBundle\Exception\RejectedFileException;
 use Irstea\FileUploadBundle\Http\UploadedFileResponse;
 use Irstea\FileUploadBundle\Model\FileManagerInterface;
 use Irstea\FileUploadBundle\Model\UploadedFileInterface;
@@ -23,6 +24,7 @@ use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
 use Symfony\Component\HttpKernel\Exception\HttpException;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Symfony\Component\Routing\RouterInterface;
+use Exception;
 
 /**
  * @Route("/files", service="irstea_file_upload.upload_controller")
@@ -65,18 +67,19 @@ class UploadController extends Controller
      */
     public function createAction(Request $request)
     {
-        $data = $request->request->get('file');
+        try {
+            $data = $request->request->get('file');
 
-        $file = $this->fileManager->create(
-            $data['name'],
-            $data['size'],
-            $data['type'],
-            isset($data['lastModified']) ? $data['lastModified'] : null
-        );
+            $file = $this->fileManager->create(
+                $data['name'],
+                $data['size'],
+                $data['type'],
+                isset($data['lastModified']) ? $data['lastModified'] : null
+            );
 
-        $parameters = ['id' => $file->getId()];
+            $parameters = ['id' => $file->getId()];
 
-        $deleteUrl = $this->router->generate('file_upload_delete', $parameters);
+            $deleteUrl = $this->router->generate('file_upload_delete', $parameters);
 
             return $this->createResponse(
                 Response::HTTP_CREATED,
@@ -92,6 +95,9 @@ class UploadController extends Controller
                 // On a pas de get pour l'instant, le DELETE et ce qui y ressemble le plus
                 [ 'Location' => $deleteUrl ]
             );
+        } catch(\Exception $ex) {
+            return $this->createExceptionResponse($ex);
+        }
     }
 
     /**
@@ -102,6 +108,7 @@ class UploadController extends Controller
      */
     public function putContentAction(Request $request, UploadedFile $file)
     {
+        try {
             $this->validateCsrfToken($request);
 
             list($offset, $maxlen, $complete) = $this->handleRangeHeader($request);
@@ -116,7 +123,11 @@ class UploadController extends Controller
             }
 
             return $this->createResponse(Response::HTTP_OK, 'Chunk received');
+
+        } catch(\Exception $ex) {
+            return $this->createExceptionResponse($ex);
         }
+    }
 
     /**
      *
@@ -209,11 +220,15 @@ class UploadController extends Controller
      */
     public function deleteAction(Request $request, UploadedFile $file)
     {
-        $this->validateCsrfToken($request);
+        try {
+            $this->validateCsrfToken($request);
 
-        $this->fileManager->delete($file);
+            $this->fileManager->delete($file);
 
-        return $this->createResponse();
+            return $this->createResponse();
+        } catch(\Exception $ex) {
+            return $this->createExceptionResponse($ex);
+        }
     }
 
     /**
@@ -245,5 +260,25 @@ class UploadController extends Controller
         return $response;
     }
 
+    /**
+     *
+     * @param \Exception $ex
+     * @return JsonResponse
+     */
+    protected function createExceptionResponse(\Exception $ex)
+    {
+        return $this->createResponse(
+            $ex instanceof HttpException ? $ex->getStatusCode() : Response::HTTP_INTERNAL_SERVER_ERROR,
+            $ex->getMessage(),
+            [
+                'exception' => [
+                    'class' => get_class($ex),
+                    'file' => $ex->getFile(),
+                    'line' => $ex->getLine(),
+                    'code' => $ex->getCode(),
+                    'trace' => $ex->getTraceAsString(),
+                ]
+            ]
+        );
     }
 }