diff --git a/src/PE/json.cpp b/src/PE/json.cpp
index f3b1d66..b5e6b49 100644
--- a/src/PE/json.cpp
+++ b/src/PE/json.cpp
@@ -14,6 +14,8 @@
  * limitations under the License.
  */
 
+#include "LIEF/logging++.hpp"
+
 #include "LIEF/PE/json.hpp"
 #include "LIEF/hash.hpp"
 #include "LIEF/PE.hpp"
@@ -486,33 +488,49 @@ void JsonVisitor::visit(const ResourceDirectory& resource_directory) {
 
 void JsonVisitor::visit(const ResourcesManager& resources_manager) {
   if (resources_manager.has_manifest()) {
-    this->node_["manifest"] = resources_manager.manifest();
+    try {
+      this->node_["manifest"] = resources_manager.manifest();
+    } catch (const LIEF::exception& e) {
+      LOG(WARNING) << e.what();
+    }
   }
 
   if (resources_manager.has_version()) {
     JsonVisitor version_visitor;
-    version_visitor(resources_manager.version());
-    this->node_["version"] = version_visitor.get();
+    try {
+      version_visitor(resources_manager.version());
+      this->node_["version"] = version_visitor.get();
+    } catch (const LIEF::exception& e) {
+      LOG(WARNING) << e.what();
+    }
   }
 
   if (resources_manager.has_icons()) {
     std::vector<json> icons;
-    for (const ResourceIcon& icon : resources_manager.icons()) {
-      JsonVisitor icon_visitor;
-      icon_visitor(icon);
-      icons.emplace_back(icon_visitor.get());
+    try {
+      for (const ResourceIcon& icon : resources_manager.icons()) {
+        JsonVisitor icon_visitor;
+        icon_visitor(icon);
+        icons.emplace_back(icon_visitor.get());
+      }
+      this->node_["icons"] = icons;
+    } catch (const LIEF::exception& e) {
+      LOG(WARNING) << e.what();
     }
-    this->node_["icons"] = icons;
   }
 
   if (resources_manager.has_dialogs()) {
     std::vector<json> dialogs;
-    for (const ResourceDialog& dialog : resources_manager.dialogs()) {
-      JsonVisitor dialog_visitor;
-      dialog_visitor(dialog);
-      dialogs.emplace_back(dialog_visitor.get());
+    try {
+      for (const ResourceDialog& dialog : resources_manager.dialogs()) {
+        JsonVisitor dialog_visitor;
+        dialog_visitor(dialog);
+        dialogs.emplace_back(dialog_visitor.get());
+      }
+      this->node_["dialogs"] = dialogs;
+    } catch (const LIEF::exception& e) {
+      LOG(WARNING) << e.what();
     }
-    this->node_["dialogs"] = dialogs;
   }
 }