Pyrogenesis  trunk
ScriptException Namespace Reference


bool IsPending (const ScriptRequest &rq)
bool CatchPending (const ScriptRequest &rq)
 Log and then clear the current pending exception. More...
void Raise (const ScriptRequest &rq, const char *format,...)
 Raise a JS exception from C++ code. More...

Function Documentation

◆ CatchPending()

bool ScriptException::CatchPending ( const ScriptRequest rq)

Log and then clear the current pending exception.

This function should always be called after calling a JS script (or anything that can throw JS errors, such as structured clones), in case that script doesn't catch an exception thrown during its execution. If no exception is pending, this does nothing. Note that JS code that wants to throw errors should throw new Error(...), otherwise the stack cannot be used.

Whether there was a pending exception.

◆ IsPending()

bool ScriptException::IsPending ( const ScriptRequest rq)
Whether there is a JS exception pending.

◆ Raise()

void ScriptException::Raise ( const ScriptRequest rq,
const char *  format,

Raise a JS exception from C++ code.

This is only really relevant in JSNative functions that don't use ObjectOpResult, as the latter overwrites the pending exception. Prefer either simply logging an error if you know a stack-trace will be raised elsewhere.