Skip to content

3.1.24

@aheejin aheejin tagged this 10 Oct 20:45
After #17979, when `ASSERTIONS` is set, uncaught exceptions carry stack
traces that are printed to the screen for debugging help. This adds
an exception message to the exception objects in addition to that.

The message it adds is produced by `__get_exception_message` function:
https://github.com/emscripten-core/emscripten/blob/f6c46570e3780e52050bf822a07b342ec4bdddbe/system/lib/libcxxabi/src/cxa_exception_emscripten.cpp#L75-L111

If an exception is a subclass of `std::exception`, it returns
`std::exception::what()`. If not, it just prints its type.

If an exception is uncaught and its type is a subclass of
`std::exception`, now we print the `what()` message along with the stack
trace when `ASSERTIONS` is set. In case our exception is
`std::runtime_error` and the message is "my exception", when uncaught,
this prints:
```
exiting due to exception: [object WebAssembly.Exception],Error:
std::runtime_error,my exception
    at __cxa_throw (wasm://wasm/009a7c9a:wasm-function[1551]:0x24367)
    ...
```

Fixes #6330.
Assets 2
Loading