diff --git a/include/caosdb/status_code.h b/include/caosdb/status_code.h
index 5689b9ebeab94d01272ce049d3cb0e3f16d13665..6a3b2bda984e9a812e65312f4f338d078c75349d 100644
--- a/include/caosdb/status_code.h
+++ b/include/caosdb/status_code.h
@@ -62,6 +62,7 @@ enum StatusCode {
   FILE_UPLOAD_ERROR = 35,
   FILE_DOWNLOAD_ERROR = 36,
   ENUM_MAPPING_ERROR = 37,
+  FILE_CANNOT_BE_READ = 38,
   OTHER_CLIENT_ERROR = 9999,
 };
 
diff --git a/include/caosdb/utility.h b/include/caosdb/utility.h
index 0cadf664346b31f7de19134eed02d13ff148269d..763646f3da9cf446ed3d9dfe144672acb36d4349 100644
--- a/include/caosdb/utility.h
+++ b/include/caosdb/utility.h
@@ -35,6 +35,7 @@
 #include <fstream>
 #include <iostream>
 #include <map>
+#include "caosdb/exceptions.h"
 #include <memory>
 #include <mutex>
 #include <shared_mutex>
@@ -90,7 +91,12 @@ auto getEnumValueFromName<caosdb::entity::Role>(const std::string &name) -> caos
  */
 inline auto load_string_file(const path &path) -> std::string {
   std::string result;
-  boost::filesystem::load_string_file(path, result);
+  try {
+    boost::filesystem::load_string_file(path, result);
+  } catch (const std::exception &exc) {
+    throw caosdb::exceptions::Exception(StatusCode::FILE_CANNOT_BE_READ ,
+                                          "Cannot read the following file: "+ path.string());
+  }
   return result;
 }