丢失异常
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的实现中就出现了这种情况,所以我建议您通过正则表达式来实现解析测试,或者使用第三方正则表达式实现。