| 90 | inline napi_value WrapCallback(napi_env env, Callable callback) { |
| 91 | #else |
| 92 | inline napi_value WrapCallback(napi_env, Callable callback) { |
| 93 | #endif |
| 94 | #ifdef NODE_ADDON_API_CPP_EXCEPTIONS |
| 95 | try { |
| 96 | return callback(); |
| 97 | } catch (const Error& e) { |
| 98 | e.ThrowAsJavaScriptException(); |
| 99 | return nullptr; |
| 100 | } |
| 101 | #ifdef NODE_ADDON_API_CPP_EXCEPTIONS_ALL |
| 102 | catch (const std::exception& e) { |
| 103 | Napi::Error::New(env, e.what()).ThrowAsJavaScriptException(); |
| 104 | return nullptr; |
| 105 | } catch (...) { |
| 106 | Napi::Error::New(env, "A native exception was thrown") |
| 107 | .ThrowAsJavaScriptException(); |
| 108 | return nullptr; |
| 109 | } |
| 110 | #endif // NODE_ADDON_API_CPP_EXCEPTIONS_ALL |
| 111 | #else // NODE_ADDON_API_CPP_EXCEPTIONS |
| 112 | // When C++ exceptions are disabled, errors are immediately thrown as JS |
| 113 | // exceptions, so there is no need to catch and rethrow them here. |
| 114 | return callback(); |
| 115 | #endif // NODE_ADDON_API_CPP_EXCEPTIONS |
| 116 | } |
| 117 | |
| 118 | // For use in JS to C++ void callback wrappers to catch any Napi::Error |
| 119 | // exceptions and rethrow them as JavaScript exceptions before returning from |
no test coverage detected