diff --git a/file_entity/file_entity.module b/file_entity/file_entity.module
index 66d4ff8..dd7aa68 100644
--- a/file_entity/file_entity.module
+++ b/file_entity/file_entity.module
@@ -222,13 +222,23 @@ function file_entity_file_delete($file) {
  */
 function file_entity_file_load($files) {
   // Load images dimensions already in the {image_dimensions} table.
-  $result = db_query('SELECT * FROM {image_dimensions} id WHERE id.fid IN (:fids)', array(':fids' => array_keys($files)));
-  foreach ($result as $record) {
-    $files[$record->fid]->image_dimensions = array(
-      'width' => $record->width,
-      'height' => $record->height,
-    );
+  $txn = db_transaction();
+
+  try {
+    $result = db_query('SELECT * FROM {image_dimensions} id WHERE id.fid IN (:fids)', array(':fids' => array_keys($files)));
+
+    foreach ($result as $record) {
+      $files[$record->fid]->image_dimensions = array(
+        'width' => $record->width,
+        'height' => $record->height,
+      );
+    }
+  }
+  catch (Exception $e) {
+    $txn->rollback();
+    watchdog_exception('file_entity', $e);
   }
+
   // Retrieve any missing images dimensions.
   foreach ($files as $file) {
     file_entity_image_dimensions($file, FALSE);
