@@ -164,15 +164,10 @@ namespace dombinding
164164 return env.Undefined ();
165165 }
166166
167- dom::DOMEventType eventType;
168- try
167+ std::optional< dom::DOMEventType> eventType = dom::StringToEventType (typeString, eventTargetType ()) ;
168+ if (!eventType. has_value ())
169169 {
170- eventType = dom::StringToEventType (typeString, eventTargetType ());
171- }
172- catch (const invalid_argument &e)
173- {
174- auto msg = " Failed to execute 'addEventListener' on 'EventTarget': " + string (e.what ());
175- Napi::TypeError::New (env, msg).ThrowAsJavaScriptException ();
170+ cerr << " The event type '" << typeString << " ' is not supported by the event target." << endl;
176171 return env.Undefined ();
177172 }
178173
@@ -227,7 +222,7 @@ namespace dombinding
227222 }
228223 };
229224
230- auto nativeListener = eventTarget->addEventListener (eventType, listenerCallback);
225+ auto nativeListener = eventTarget->addEventListener (eventType. value () , listenerCallback);
231226 listenerRefToNativeIdMap.insert ({listenerRef, nativeListener->id });
232227 return env.Undefined ();
233228 }
@@ -266,15 +261,10 @@ namespace dombinding
266261 return env.Undefined ();
267262 }
268263
269- dom::DOMEventType eventType;
270- try
271- {
272- eventType = dom::StringToEventType (typeString, eventTargetType ());
273- }
274- catch (const invalid_argument &e)
264+ std::optional<dom::DOMEventType> eventType = dom::StringToEventType (typeString, eventTargetType ());
265+ if (!eventType.has_value ())
275266 {
276- auto msg = " Failed to execute 'removeEventListener' on 'EventTarget': " + string (e.what ());
277- Napi::TypeError::New (env, msg).ThrowAsJavaScriptException ();
267+ cerr << " The event type '" << typeString << " ' is not supported by the event target." << endl;
278268 return env.Undefined ();
279269 }
280270
@@ -284,7 +274,7 @@ namespace dombinding
284274 if (listenerRef->Value () == listenerValue)
285275 {
286276 uint32_t listenerId = it->second ;
287- eventTarget->removeEventListener (eventType, listenerId);
277+ eventTarget->removeEventListener (eventType. value () , listenerId);
288278 it = listenerRefToNativeIdMap.erase (it);
289279 break ;
290280 }
@@ -328,19 +318,14 @@ namespace dombinding
328318 }
329319
330320 auto eventTypeString = eventObject.Get (" type" ).ToString ().Utf8Value ();
331- dom::DOMEventType eventType;
332- try
333- {
334- eventType = dom::StringToEventType (eventTypeString, eventTargetType ());
335- }
336- catch (const invalid_argument &e)
321+ std::optional<dom::DOMEventType> eventType = dom::StringToEventType (eventTypeString, eventTargetType ());
322+ if (!eventType.has_value ())
337323 {
338- auto msg = " Failed to execute 'dispatchEvent' on 'EventTarget': " + string (e.what ());
339- Napi::TypeError::New (env, msg).ThrowAsJavaScriptException ();
324+ cerr << " The event type '" << eventTypeString << " ' is not supported by the event target type." << endl;
340325 return env.Undefined ();
341326 }
342327
343- eventTarget->dispatchEvent (eventType, nullptr );
328+ eventTarget->dispatchEvent (eventType. value () , nullptr );
344329 return Napi::Boolean::New (env, true );
345330 }
346331
0 commit comments