diff --git a/src/common/GmshMessage.cpp b/src/common/GmshMessage.cpp
index 896e1298a4924067649b925df5fb2d55d788143a..fd3a9a0943b702daff992f34bcbe9035a7f254db 100644
--- a/src/common/GmshMessage.cpp
+++ b/src/common/GmshMessage.cpp
@@ -530,10 +530,10 @@ void Msg::Error(const char *fmt, ...)
 #if defined(HAVE_FLTK)
     if(FlGui::available()) return; // don't throw if GUI is running
 #endif
-    throw _lastError;
+    throw std::runtime_error(_lastError);
   }
   else if(CTX::instance()->abortOnError == 3) {
-    throw _lastError;
+    throw std::runtime_error(_lastError);
   }
   else if(CTX::instance()->abortOnError == 4) {
     Exit(1);