丢失 Emscripten 异常和正则表达式问题

丢失异常

Emscripten 的一个有趣功能:当通过 emscripten_set_main_loop 启动游戏循环时,您应该记住必须在循环方法中直接通过 try catch 重新添加异常处理,因为运行时丢失来自外部的 try catch 块。
最简单的方法是使用 javascript 警报在浏览器中显示错误文本:

            catch (const std::exception &exc)
            {
                const char *errorText = exc.what();
                cout << "Exception: " << errorText << "; Stop execution" << endl;

                EM_ASM_(
                {
                    var errorText = UTF8ToString($0);
                    alert(errorText);

                }, errorText);

                abort();

正则表达式太复杂

如果 regex 的 std 实现认为正则表达式过于复杂,则可能会抛出 error_complexity 异常。目前emscripten的实现中就出现了这种情况,所以我建议您通过正则表达式来实现解析测试,或者使用第三方正则表达式实现。