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?

  • Crie 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…