diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index 4d942ed..2901f3b 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -877,13 +877,27 @@ function _block_get_renderable_block($element) {
 
   // Render the block content if it has not been created already.
   if (!isset($block->content)) {
-    $array = module_invoke($block->module, 'block_view', $block->delta);
+    try{
+      $array = module_invoke($block->module, 'block_view', $block->delta);
 
-    // Allow modules to modify the block before it is viewed, via either
-    // hook_block_view_alter() or hook_block_view_MODULE_DELTA_alter().
-    drupal_alter(array('block_view', "block_view_{$block->module}_{$block->delta}"), $array, $block);
-
-    if (empty($array['content'])) {
+      // Allow modules to modify the block before it is viewed, via either
+      // hook_block_view_alter() or hook_block_view_MODULE_DELTA_alter().
+      drupal_alter(array('block_view', "block_view_{$block->module}_{$block->delta}"), $array, $block);
+    }
+    catch (Exception $exception) {
+      require_once DRUPAL_ROOT . '/includes/errors.inc';
+      // Block Failed to render, hide it and log the exception
+      watchdog_exception('block', $exception);
+
+      if (error_displayable()) {
+        $array = array(
+          'content' => t('Failed to render block: (%type: !message in %function (line %line of %file)).', _drupal_decode_exception($exception)),
+        );
+      } else {
+        $array = NULL;
+      }
+    }
+    if (!$array || (is_array($array) && empty($array['content'])) ) {
       // Blocks without content should emit no markup at all.
       $element += array(
         '#access' => FALSE,
