diff --git a/contrib/Netgen/nglib_addon.cpp b/contrib/Netgen/nglib_addon.cpp
index 51527333faabc2fae202442aa7d5afb15dcdb197..8796bd7105019c48c891b5368579266da62b65fe 100644
--- a/contrib/Netgen/nglib_addon.cpp
+++ b/contrib/Netgen/nglib_addon.cpp
@@ -31,7 +31,7 @@ class mystreambuf: public streambuf
     }
     else{
       if(!strncmp(txt, "ERROR", 5))
-	Msg::Fatal(txt);
+	Msg::Error(txt);
       else
 	Msg::Info(txt);
     }
@@ -76,11 +76,16 @@ Ng_Result NgAddOn_GenerateVolumeMesh(Ng_Mesh *mesh, double maxh)
   MeshingParameters mparam;
   mparam.uselocalh = 1;
   mparam.maxh = maxh;
-
-  m->CalcLocalH();
-  MeshVolume(mparam, *m);
-  //RemoveIllegalElements(*m);
-  //OptimizeVolume(mparam, *m);
+  
+  try{
+    m->CalcLocalH();
+    MeshVolume(mparam, *m);
+    //RemoveIllegalElements(*m);
+    //OptimizeVolume(mparam, *m);
+  }
+  catch(netgen::NgException error){
+    return NG_VOLUME_FAILURE;
+  }
   return NG_OK;
 }
 
@@ -93,10 +98,15 @@ Ng_Result NgAddOn_OptimizeVolumeMesh(Ng_Mesh *mesh, double maxh)
   mparam.uselocalh = 1;
   mparam.maxh = maxh;
 
-  m->CalcLocalH();
-  //MeshVolume(mparam, *m);
-  RemoveIllegalElements(*m);
-  OptimizeVolume(mparam, *m);
+  try{
+    m->CalcLocalH();
+    //MeshVolume(mparam, *m);
+    RemoveIllegalElements(*m);
+    OptimizeVolume(mparam, *m);
+  }
+  catch(netgen::NgException error){
+    return NG_VOLUME_FAILURE;
+  }
   return NG_OK;
 }