diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 088aa0e..0dd3d62 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,5 +1,6 @@
 Apache Solr integration 6.x-3.x, xxxx-xx-xx
 ------------------------------
+#1409878 by becw: Fixed Uncaught exception when the default environment does not exist (patch).
 #1409146 by Nick_vh: Fixed Add all possible index_types() to apachesolr_index_key().
 #1409470 by Nick_vh | xeconsulting: Fixed Some Errors in dev Version from 18th January.
 #1408192 by becw: Fixed Add apachesolr.interface.inc to the .info file (patch).
diff --git a/apachesolr.index.inc b/apachesolr.index.inc
index eb26386..57fad39 100644
--- a/apachesolr.index.inc
+++ b/apachesolr.index.inc
@@ -355,17 +355,22 @@ function apachesolr_index_get_entities_to_index($env_id, $entity_type, $limit) {
  */
 function apachesolr_index_delete_index($env_id) {
   // Instantiate a new Solr object.
-  $solr = apachesolr_get_solr($env_id);
-  $query = '*:*';
-
-  // Allow other modules to modify the delete query.
-  // For example, use the site hash so that you only delete this site's
-  // content:  $query = 'hash:' . apachesolr_site_hash()
-  drupal_alter('apachesolr_delete_index', $query);
-  $solr->deleteByQuery($query);
-  $solr->commit();
-  apachesolr_clear_last_index_position($env_id);
-  apachesolr_set_last_index_updated($env_id, APACHESOLR_REQUEST_TIME);
+  try {
+    $solr = apachesolr_get_solr($env_id);
+    $query = '*:*';
+
+    // Allow other modules to modify the delete query.
+    // For example, use the site hash so that you only delete this site's
+    // content:  $query = 'hash:' . apachesolr_site_hash()
+    drupal_alter('apachesolr_delete_index', $query);
+    $solr->deleteByQuery($query);
+    $solr->commit();
+    apachesolr_clear_last_index_position($env_id);
+    apachesolr_set_last_index_updated($env_id, REQUEST_TIME);
+  }
+  catch (Exception $e) {
+    watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
+  }
 }
 
 /**
diff --git a/apachesolr.module b/apachesolr.module
index d326a57..2e9c8bc 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -1011,7 +1011,12 @@ function apachesolr_default_environment($env_id = NULL) {
  * number of solr objects to be used based on a name whie maps to
  * the host, port, path combination.
  * Get an instance like this:
- *   $solr = apachesolr_get_solr();
+ *   try {
+ *     $solr = apachesolr_get_solr();
+ *   }
+ *   catch (Exception $e) {
+ *     watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
+ *   }
  *
  * @throws Exception
  */
@@ -1028,24 +1033,29 @@ function apachesolr_get_solr($env_id = NULL, $reset = FALSE) {
 
   // @Todo
   // Extra service classes should include their file on their own responsability
-  $class = $environments[$env_id]['service_class'];
-
-  if (empty($solr_cache[$env_id])) {
-    // Use the default class if none is specified.
-    $class_info = variable_get('apachesolr_service_class', array(
-      'file' => 'Drupal_Apache_Solr_Service',
-      'module' => 'apachesolr',
-      'class' => 'DrupalApacheSolrService'));
-
-    if (!class_exists($class) && isset($class_info['file']) && isset($class_info['module'])) {
-      module_load_include('php', $class_info['module'], $class_info['file']);
-      $class = $class_info['class'];
+  if (isset($environments[$env_id])) {
+    $class = $environments[$env_id]['service_class'];
+
+    if (empty($solr_cache[$env_id])) {
+      // Use the default class if none is specified.
+      $class_info = variable_get('apachesolr_service_class', array(
+        'file' => 'Drupal_Apache_Solr_Service',
+        'module' => 'apachesolr',
+        'class' => 'DrupalApacheSolrService'));
+
+      if (!class_exists($class) && isset($class_info['file']) && isset($class_info['module'])) {
+        module_load_include('php', $class_info['module'], $class_info['file']);
+        $class = $class_info['class'];
+      }
+      // Takes advantage of auto-loading.
+      $solr = new $class($environments[$env_id]['url'], $env_id);
+      $solr_cache[$env_id] = $solr;
     }
-    // Takes advantage of auto-loading.
-    $solr = new $class($environments[$env_id]['url'], $env_id);
-    $solr_cache[$env_id] = $solr;
+    return $solr_cache[$env_id];
+  }
+  else {
+    throw new Exception('No default Apache Solr environment.');
   }
-  return $solr_cache[$env_id];
 }
 
 /**
diff --git a/apachesolr_search.admin.inc b/apachesolr_search.admin.inc
index 1f5c974..4d24a90 100644
--- a/apachesolr_search.admin.inc
+++ b/apachesolr_search.admin.inc
@@ -965,15 +965,22 @@ function apachesolr_search_mlt_block_defaults($block = array()) {
  * @return array An array containing a the fields in the solr instance.
  */
 function apachesolr_search_mlt_get_fields() {
-  $solr = apachesolr_get_solr();
-  $fields = $solr->getFields();
   $rows = array();
-  foreach ($fields as $field_name => $field) {
-    if ($field->schema{4} == 'V') {
-      $rows[$field_name] = apachesolr_field_name_map($field_name);
+
+  try {
+    $solr = apachesolr_get_solr();
+    $fields = $solr->getFields();
+    foreach ($fields as $field_name => $field) {
+      if ($field->schema{4} == 'V') {
+        $rows[$field_name] = apachesolr_field_name_map($field_name);
+      }
     }
+    ksort($rows);
   }
-  ksort($rows);
+  catch (Exception $e) {
+    watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
+  }
+
   return $rows;
 }
 
diff --git a/apachesolr_search.module b/apachesolr_search.module
index ada039d..4ebc5b2 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -446,11 +446,16 @@ function apachesolr_search_block_view($delta = '') {
     if ($block && node_access('view', $node)) {
       // Get our specific environment for the MLT block
       $env_id = (!empty($block['mlt_env_id'])) ? $block['mlt_env_id'] : '';
-      $solr = apachesolr_get_solr($env_id);
-      $docs = apachesolr_search_mlt_suggestions($block, apachesolr_document_id($node->nid), $solr);
-      if (!empty($docs)) {
-        $suggestions['subject'] = check_plain($block['name']);
-        $suggestions['content'] = theme('apachesolr_search_mlt_recommendation_block', $docs, $delta);
+      try {
+        $solr = apachesolr_get_solr($env_id);
+        $docs = apachesolr_search_mlt_suggestions($block, apachesolr_document_id($node->nid), $solr);
+        if (!empty($docs)) {
+          $suggestions['subject'] = check_plain($block['name']);
+          $suggestions['content'] = theme('apachesolr_search_mlt_recommendation_block', $docs, $delta);
+        }
+      }
+      catch (Exception $e) {
+        watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
       }
     }
     return $suggestions;
@@ -983,7 +988,7 @@ function apachesolr_search_run($name, array $params = array(), $solrsort = '', $
   if ($query->getParam('q')) {
     apachesolr_search_add_spellcheck_params($query);
   }
-  
+
   // Add custom params after we add the default params
   $query->addParams($params);
 
diff --git a/plugins/facetapi/query_type_numeric_range.inc b/plugins/facetapi/query_type_numeric_range.inc
index 0560ad1..180b851 100644
--- a/plugins/facetapi/query_type_numeric_range.inc
+++ b/plugins/facetapi/query_type_numeric_range.inc
@@ -50,6 +50,8 @@ class ApacheSolrFacetapiNumericRange extends FacetapiQueryType implements Faceta
   /**
    * Initializes the facet's build array.
    *
+   * Any calls to this method need to be wrapped in a try-catch block.
+   *
    * @return array
    *   The initialized render array.
    */
