{"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\/pt\/2019\/09\/24\/webassembly-lost-exceptions-and-regex-troubles\/","title":{"rendered":"Exce\u00e7\u00f5es perdidas do Emscripten e problemas de regex"},"content":{"rendered":"<h3>Exce\u00e7\u00e3o perdida<\/h3>\n<p>Um recurso interessante do Emscripten: ao iniciar um loop de jogo via emscripten_set_main_loop, voc\u00ea deve lembrar que o tratamento de exce\u00e7\u00f5es deve ser adicionado novamente via try catch diretamente no m\u00e9todo loop, porque o tempo de execu\u00e7\u00e3o perde o bloco try catch de fora.<br \/>A maneira mais f\u00e1cil \u00e9 exibir o texto do erro usando o navegador usando alerta javascript:<\/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>Express\u00e3o regular muito complexa<\/h3>\n<p>A implementa\u00e7\u00e3o padr\u00e3o de regex pode lan\u00e7ar uma exce\u00e7\u00e3o error_complexity se considerar que a express\u00e3o regular \u00e9 muito complexa. Isso acontece na implementa\u00e7\u00e3o atual do emscripten, ent\u00e3o sugiro que voc\u00ea implemente testes para an\u00e1lise por meio de express\u00f5es regulares ou use implementa\u00e7\u00f5es de regex de terceiros.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Exce\u00e7\u00e3o perdida Um recurso interessante do Emscripten: ao iniciar um loop de jogo via emscripten_set_main_loop, voc\u00ea deve lembrar que o tratamento de exce\u00e7\u00f5es deve ser adicionado novamente via try catch diretamente no m\u00e9todo loop, porque o tempo de execu\u00e7\u00e3o perde o bloco try catch de fora.A maneira mais f\u00e1cil \u00e9 exibir o texto do erro<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/pt\/2019\/09\/24\/webassembly-lost-exceptions-and-regex-troubles\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Exce\u00e7\u00f5es perdidas do Emscripten e problemas de regex&#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":"pt","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\/pt\/wp-json\/wp\/v2\/posts\/2208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2208"}],"version-history":[{"count":6,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2208\/revisions"}],"predecessor-version":[{"id":3942,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2208\/revisions\/3942"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}