Determine whether an exception is pending in the JS engine.
Syntax
bool JS_IsExceptionPending(JSContext *cx);
Name | Type | Description |
---|---|---|
cx |
JSContext * |
Pointer to a JS context to check for pending exceptions. |
Description
JS_IsExceptionPending
returns true
if an exception has been thrown in the context cx
and the exception has not yet been caught or cleared. Otherwise, it returns false
This can be used from JSNative
functions which call JS code to determine if the called JS code threw an exception or not.
Example
/* JSAPI */ bool pending; JS::RootedValue exception(cx); /* If an exception is pending, save and clear it. */ pending = JS_IsExceptionPending(cx); if (pending) { if (!JS_GetPendingException(cx, &exception)) return false; JS_ClearPendingException(cx); } /* ... code that might throw JS exception ... */ if (JS_IsExceptionPending(cx)) { /* ... react to exception thrown in this block ... */ JS_ClearPendingException(cx); } /* Restore the original exception. */ if (pending) { JS_SetPendingException(cx, exception); }