O relatório e a captura de erros do JavaScript são importantes e ficarão ainda mais importantes à medida que nossos aplicativos da Web se tornarem mais avançados e poderosos. Eu nunca usei try/catch
geralmente só pego exceções para coisas que normalmente são conhecidas por causar problemas.
O senhor se lembra deste dos tempos do IE6?
try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {}
Foi muito divertido. O Mobile Webkit costumava (e ainda pode) reclamar do uso do localStorage quando as permissões são de uma determinada maneira, então eu try/catch
isso também:
try { // Adding try/catch due to mobile Safari weirdness if('localStorage' in window) { } } catch(e) {}
Mas se o senhor não acompanhar os erros em seu aplicativo, estará perdendo os casos em que estão ocorrendo problemas legítimos. Mas como saber que tipo de exceção o senhor encontrou? É mais fácil do que o senhor pensa:
try { eval('5 + / 3'); // will raise SyntaxError exception } catch(e) { // Compare as objects if(e.constructor == SyntaxError) { // There's something wrong with your code, bro } // Get the error type as a string for reporting and storage console.log(e.constructor.name); // SyntaxError }
O senhor pode fazer a comparação de objetos se planeja fazer algo sobre o erro com base no tipo ou, se quiser armazenar essas informações de erro em algum lugar, pode obter o nome da exceção!
Animação CSS vs. JS: O que é mais rápido?
Como é possível que a animação baseada em JavaScript sempre tenha sido secretamente tão rápida – ou mais rápida – do que as transições CSS? E, como é possível que a Adobe e o Google lancem consistentemente sites móveis ricos em mídia que rivalizam com o desempenho de aplicativos nativos?
Criar classes com espaço de nome com o MooTools
O MooTools sempre foi um pouco criticado por não usar e padronizar inerentemente classes JavaScript baseadas em namespaced, como faz o Dojo Toolkit. Muitos desenvolvedores criam suas classes como globais, o que geralmente é mal visto. Na maioria das vezes, não concordo com essa posição, mas cada um tem a sua. De qualquer forma…