diff --git a/contrib/search_api_views/includes/handler_argument_fulltext.inc b/contrib/search_api_views/includes/handler_argument_fulltext.inc
index a6f00e2..a4db8e2 100644
--- a/contrib/search_api_views/includes/handler_argument_fulltext.inc
+++ b/contrib/search_api_views/includes/handler_argument_fulltext.inc
@@ -66,7 +66,13 @@ class SearchApiViewsHandlerArgumentFulltext extends SearchApiViewsHandlerArgumen
    */
   public function query($group_by = FALSE) {
     if ($this->options['fields']) {
-      $this->query->fields($this->options['fields']);
+      try {
+        $this->query->fields($this->options['fields']);
+      }
+      catch (SearchApiException $e) {
+        $this->query->abort($e->getMessage());
+        return;
+      }
     }
     if ($this->options['conjunction'] != 'AND') {
       $this->query->setOption('conjunction', $this->options['conjunction']);
diff --git a/contrib/search_api_views/includes/handler_filter_fulltext.inc b/contrib/search_api_views/includes/handler_filter_fulltext.inc
index b1208bd..71745ae 100644
--- a/contrib/search_api_views/includes/handler_filter_fulltext.inc
+++ b/contrib/search_api_views/includes/handler_filter_fulltext.inc
@@ -170,7 +170,13 @@ class SearchApiViewsHandlerFilterFulltext extends SearchApiViewsHandlerFilterTex
       $this->query->setOption('conjunction', 'OR');
     }
 
-    $this->query->fields($fields);
+    try {
+      $this->query->fields($fields);
+    }
+    catch (SearchApiException $e) {
+      $this->query->abort($e->getMessage());
+      return;
+    }
     $old = $this->query->getKeys();
     $old_original = $this->query->getOriginalKeys();
     $this->query->keys($this->value);
diff --git a/contrib/search_api_views/includes/handler_sort.inc b/contrib/search_api_views/includes/handler_sort.inc
index a6aa6a9..d7ca1e4 100644
--- a/contrib/search_api_views/includes/handler_sort.inc
+++ b/contrib/search_api_views/includes/handler_sort.inc
@@ -28,6 +28,7 @@ class SearchApiViewsHandlerSort extends views_handler_sort {
       unset($this->query->orderby);
       $sort = &$this->query->getSort();
       $sort = array();
+      unset($sort);
     }
 
     // If two of the same fields are used for sort, ignore the latter in order
@@ -38,7 +39,12 @@ class SearchApiViewsHandlerSort extends views_handler_sort {
       return;
     }
 
-    $this->query->sort($this->real_field, $this->options['order']);
+    try {
+      $this->query->sort($this->real_field, $this->options['order']);
+    }
+    catch (SearchApiException $e) {
+      $this->query->abort($e->getMessage());
+    }
   }
 
 }
diff --git a/includes/query.inc b/includes/query.inc
index 7f13f16..b887c79 100644
--- a/includes/query.inc
+++ b/includes/query.inc
@@ -226,6 +226,9 @@ interface SearchApiQueryInterface {
    *
    * This method should always be called by execute() and contain all necessary
    * operations before the query is passed to the server's search() method.
+   *
+   * @throws SearchApiException
+   *   If any error occurred during the preparation of the query.
    */
   public function preExecute();
 
