{"id":2208,"date":"2019-09-24T23:07:46","date_gmt":"2019-09-24T20:07:46","guid":{"rendered":"http:\/\/demensdeum.com\/blog\/?p=2208"},"modified":"2024-12-16T22:32:34","modified_gmt":"2024-12-16T19:32:34","slug":"webassembly-lost-exceptions-and-regex-troubles","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/fr\/2019\/09\/24\/webassembly-lost-exceptions-and-regex-troubles\/","title":{"rendered":"Exceptions Emscripten perdues et probl\u00e8mes d&#8217;expression r\u00e9guli\u00e8re"},"content":{"rendered":"<h3>Exception perdue<\/h3>\n<p>Une fonctionnalit\u00e9 int\u00e9ressante d&#8217;Emscripten\u00a0: lorsque vous d\u00e9marrez une boucle de jeu via emscripten_set_main_loop, vous devez vous rappeler que la gestion des exceptions doit \u00eatre r\u00e9-ajout\u00e9e via try catch directement dans la m\u00e9thode de boucle, car Le runtime perd le bloc try catch de l&#8217;ext\u00e9rieur.<br \/>Le moyen le plus simple est d&#8217;afficher le texte d&#8217;erreur \u00e0 l&#8217;aide du navigateur \u00e0 l&#8217;aide de l&#8217;alerte javascript\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>            catch (const std::exception &exc)\n            {\n                const char *errorText = exc.what();\n                cout << \"Exception: \" << errorText << \"; Stop execution\" << endl;\n\n                EM_ASM_(\n                {\n                    var errorText = UTF8ToString($0);\n                    alert(errorText);\n\n                }, errorText);\n\n                abort();\n<\/code><\/pre>\n<\/div>\n<h3>Expression rationnelle trop complexe<\/h3>\n<p>L'impl\u00e9mentation std de regex peut lever une exception error_complexity si elle consid\u00e8re que l'expression r\u00e9guli\u00e8re est trop complexe. Cela se produit dans l'impl\u00e9mentation actuelle d'emscripten, je vous sugg\u00e8re donc d'impl\u00e9menter des tests d'analyse via des expressions r\u00e9guli\u00e8res ou d'utiliser des impl\u00e9mentations d'expressions r\u00e9guli\u00e8res tierces.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Exception perdue Une fonctionnalit\u00e9 int\u00e9ressante d&#8217;Emscripten\u00a0: lorsque vous d\u00e9marrez une boucle de jeu via emscripten_set_main_loop, vous devez vous rappeler que la gestion des exceptions doit \u00eatre r\u00e9-ajout\u00e9e via try catch directement dans la m\u00e9thode de boucle, car Le runtime perd le bloc try catch de l&#8217;ext\u00e9rieur.Le moyen le plus simple est d&#8217;afficher le texte d&#8217;erreur<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/fr\/2019\/09\/24\/webassembly-lost-exceptions-and-regex-troubles\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Exceptions Emscripten perdues et probl\u00e8mes d&#8217;expression r\u00e9guli\u00e8re&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[94,118,61],"tags":[119,121,120],"class_list":["post-2208","post","type-post","status-publish","format-standard","hentry","category-dev-diary","category-hints","category-techie","tag-emscripten","tag-hints","tag-webassembly","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"fr","enabled_languages":["en","ru","zh","de","fr","ja","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":false,"content":false,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/comments?post=2208"}],"version-history":[{"count":6,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2208\/revisions"}],"predecessor-version":[{"id":3942,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2208\/revisions\/3942"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/media?parent=2208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/categories?post=2208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/tags?post=2208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}