A função de reporting e catching erros no JavaScript é importante e vai se tornar ainda mais, já que as aplicações web têm se tornado mais ricas e poderosas. Eu nunca utilizei blocks try/catch em profundidade – geralmente uso exceções catch para coisas que não me causam muitos problemas.
Você se lembra disso, dos “gloriosos” dias do IE6?
try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {}
Cara, era divertido! O Mobile Webkit costumava (e talvez ainda faça isso) reclamar quando a gente usava localStorage quando as permissões eram feitas de determinada forma, então eu tentava fazer um try/catch também:
try { // Adding try/catch due to mobile Safari weirdness if('localStorage' in window) { } } catch(e) {}
Mas se você não acompanhar os erros na sua aplicação, vai perder nas instâncias onde problemas legítimos estão acontecendo. Mas como saber com qual tipo de exceção você deve se preocupar? É mais fácil do que você 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 }
Você pode fazer uma comparação do objeto se planeja fazer algo sobre o erro baseado no tipo, ou se quer armazenar a informação de erro em algum outro lugar, você pode buscar o nome da exceção!
***
David Walsh faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://davidwalsh.name/detect-error-type-javascript