承诺中的 C++ 例外提前释放, 销毁器不会运行
以6.0.9号标注,C++例外逃避同步的 " val " 承诺在到达联署材料的呼叫者之前即被释放。 这发生在`val: promise'逻辑中,即它所拒绝的错误的销毁器(通过 emval from current cxa excution ' 获得)。
此外,即使内存被放出,C++例外的破坏器也永远不会被运行.
鉴于`mwe.cpp': 翻译:
包括<emscripten/bind.h>
包括<emscripten/val.h>
包括 " 电流 "
包含 < sdd >
包含 < 字符串 >
使用标注::val;
类 MyError: public std::: 例外{ 挥发性std::uint32 t check{0xdeadbeef}; 公开 : MyError () { std:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ~ MyError () { std:: clog }"~ MyError" {std::: endl; 检查=0;} Const Char * 什么( ) 除了覆盖{ -=YTET -伊甸园字幕组=- 翻译: {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
- ;
// 以 C++ 为例外拒绝其承诺的冕素 val 拒绝 Async () { //确保真正的暂停先发生,所以例外从恢复的胸围中抛出. co await val: global ("保证"). call ("解决"); 丢出 MyError (); {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
无效掷出同步 () { 丢出 MyError (); {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
EMSCRIPTEN BINDINGS(mWE) { (中文(简体) ). 标注: 函数 ("rejectAsync", &rejectAsync); 标注 : 函数 ("推出同步", (T) ; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
还有`test.mjs':
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
#!/usr/bin/env节点
(一) 从'./mwe.mjs'导入内存;
cont 模块 = 等待 initModule ();
函数描述( 标签, 前) {
control.log(`${label}: caught', ex?. constructor?.name);
尝试{
控制台.log( ${ label} : getExceptionMessage QQ, Module.getExceptionMessage( ex) );
模块. 降级例外
a. 控制台.log(`${ label}: 递减例外
{\fn华文楷体\fs16\1cHE0E0E0}抓住(e){
a. 控制台.log(`${ label}: fellowed:`, e);
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
尝试 {module.throwSync ();} 捕获( ex) { 描述('sync', ex);}
尝试 {等待module.rejectAsync ();} 抓取( ex) {描述('async', ex);}贝壳 EM++ 组合键 mwe.cpp -o mwe.mjs -std=c++20 -lembind -fwasm -例外 -sexported RUNTIME MEthODS=get ExceptionMessage,decretion Exception -v
< details}}\ summary> 编译日志</ summary>
/home/swdv/emsdk/上流/bin/clang --version(英语: 共享: INFO:(Emscripten: 运行理智检查) "/home/swdv/emsdk/upsream/bin/clang+" - 目标为:hem32-unknown-emscripten-mllvm-combiner-global-alias-analysis=false-mllvm-ZWASM-enable-sjlj-mllvm-ZWASM-use-legacy-eh-mvmvm-dap-dis-dis-sysproot=/home/swdv/uptle-emscripten-i-i-ysproot-in/inclump/compt-s-t-fwas-例外-v-cmwe.pp-o/tpp-hp83/mwe.o. (https:/GitHub.com/llvm/llvm-Project 510126255f89d693717c1ce7105b593f995f07c1). 目标:him32-unknown-emscripten 线索模型: posix 安装的目录 :/ home/swdv/emsdk/上游/bin (进行中) "/home/swdv/emsdk/uppression/bin/clang-24"-cc1-三相正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦正弦 . . . . . . .
内容来源: emscripten-core/emscripten