diff --git a/includes/entity.wrapper.inc b/includes/entity.wrapper.inc
index 027d8b8..8e92bc6 100644
--- a/includes/entity.wrapper.inc
+++ b/includes/entity.wrapper.inc
@@ -210,6 +210,7 @@ abstract class EntityMetadataWrapper {
 
   /**
    * Determines whether the given user has access to view or edit this property.
+   *
    * Apart from relying on access metadata of properties, this takes into
    * account information about entity level access, if available:
    *  - Referenced entities can only be viewed, when the user also has
@@ -221,6 +222,7 @@ abstract class EntityMetadataWrapper {
    *   The operation being performed. One of 'view' or 'edit.
    * @param $account
    *   The user to check for. Leave it to NULL to check for the global user.
+   *
    * @return boolean
    *   Whether access to entity property is allowed for the given operation.
    *   However if we wrap no data, it returns whether access is allowed to the
@@ -327,6 +329,7 @@ class EntityStructureWrapper extends EntityMetadataWrapper implements IteratorAg
    *   be returned.
    * @throws EntityMetadataWrapperException
    *   If there is no such property.
+   *
    * @return
    *   An array of info about the property.
    */
@@ -516,7 +519,13 @@ class EntityStructureWrapper extends EntityMetadataWrapper implements IteratorAg
       }
     }
     if (!empty($info['access callback'])) {
-      $data = $this->dataAvailable() ? $this->value() : NULL;
+      try {
+        $data = $this->dataAvailable() ? $this->value() : NULL;
+      }
+      catch (EntityMetadataWrapperException $e) {
+        // Catch possibly thrown exceptions when getting the value.
+        $data = NULL;
+      }
       return call_user_func($info['access callback'], $op, $name, $data, $account, $this->type);
     }
     elseif ($op == 'edit' && isset($info['setter permission'])) {
