diff --git a/Mesh/meshGRegion.cpp b/Mesh/meshGRegion.cpp
index 551a1b1718f1f03974d4d1d9d2712c3456aa03e2..093efc8698120332f0a64d6dc97aafa02398ad68 100644
--- a/Mesh/meshGRegion.cpp
+++ b/Mesh/meshGRegion.cpp
@@ -1309,9 +1309,14 @@ void MeshDelaunayVolume(std::vector<GRegion*> &regions)
   }
   gr->set(allFaces);
 
-  meshGRegionBoundaryRecovery *init = new meshGRegionBoundaryRecovery();
-  init->reconstructmesh(gr);
-  delete init;
+  try{
+    meshGRegionBoundaryRecovery *init = new meshGRegionBoundaryRecovery();
+    init->reconstructmesh(gr);
+    delete init;
+  }
+  catch(int err){
+    Msg::Error("Could not recover boundary: error %d", err);
+  }
 
   // sort triangles in all model faces in order to be able to search in vectors
   std::list<GFace*>::iterator itf =  allFaces.begin();