diff --git a/tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp b/tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp
index 814dbe20ccdc624bbbb2f709297c9e4918d74277..b50d9d981b0f0289ae2046cf3aaa04aa91e3de51 100644
--- a/tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp
+++ b/tools/dhtnet_crtmgr/dhtnet_crtmgr.cpp
@@ -49,7 +49,13 @@ dht::crypto::Identity generateIdentity(const std::filesystem::path& path_id, con
         fmt::print(stderr, "Error: failed to create directory {}\n", path_id.string());
         return {};
     }
-    dht::crypto::saveIdentity(identity, path_id / name);
+    // catch error
+    try{
+        dht::crypto::saveIdentity(identity, path_id / name);
+    } catch (const std::exception& e) {
+        fmt::print(stderr, "Error: failed to save identity: {}\n", e.what());
+        return {};
+    }
     return identity;
 }
 } // namespace dhtnet