diff --git a/src/json.hpp b/src/json.hpp
index 5bd5bde7..f7b832b5 100644
--- a/src/json.hpp
+++ b/src/json.hpp
@@ -82,7 +82,7 @@ SOFTWARE.
 #endif
 
 // allow to disable exceptions
-#if not defined(JSON_NOEXCEPTION) || defined(__EXCEPTIONS)
+#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION)
     #define JSON_THROW(exception) throw exception
     #define JSON_TRY try
     #define JSON_CATCH(exception) catch(exception)
diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c
index baba3107..04de67cf 100644
--- a/src/json.hpp.re2c
+++ b/src/json.hpp.re2c
@@ -82,7 +82,7 @@ SOFTWARE.
 #endif
 
 // allow to disable exceptions
-#if not defined(JSON_NOEXCEPTION) || defined(__EXCEPTIONS)
+#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION)
     #define JSON_THROW(exception) throw exception
     #define JSON_TRY try
     #define JSON_CATCH(exception) catch(exception)