Exceptions Emscripten perdues et problèmes d’expression régulière

Exception perdue

Une fonctionnalité intéressante d’Emscripten : lorsque vous démarrez une boucle de jeu via emscripten_set_main_loop, vous devez vous rappeler que la gestion des exceptions doit être ré-ajoutée via try catch directement dans la méthode de boucle, car Le runtime perd le bloc try catch de l’extérieur.
Le moyen le plus simple est d’afficher le texte d’erreur à l’aide du navigateur à l’aide de l’alerte 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();

Expression rationnelle trop complexe

L'implémentation std de regex peut lever une exception error_complexity si elle considère que l'expression régulière est trop complexe. Cela se produit dans l'implémentation actuelle d'emscripten, je vous suggère donc d'implémenter des tests d'analyse via des expressions régulières ou d'utiliser des implémentations d'expressions régulières tierces.