Hlášení chyb v JavaScriptu a jejich zachycení je důležité a bude ještě důležitější, až budou naše webové aplikace bohatší a výkonnější. Nikdy jsem nepoužil try/catch
bloky do hloubky – obvykle pouze zachytím výjimky pro věci, o kterých je známo, že způsobují problémy.
Pamatujete si tohle ze dnů IE6?
try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {}
Chlapec byl tak zábavný. Mobile Webkit si dříve (a stále může) stěžovat na používání localStorage, když jsou oprávnění určitým způsobem, takže bych try/catch
to taky:
try { // Adding try/catch due to mobile Safari weirdness if('localStorage' in window) { } } catch(e) {}
Pokud ale nesledujete chyby ve své aplikaci, přicházíte o případy, kdy dochází k legitimním problémům. Jak ale víte, na jaký typ výjimky jste narazili? Je to jednodušší, než si myslíte:
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 }
Porovnání objektů můžete provést, pokud plánujete s chybou něco udělat na základě typu, nebo pokud chcete informace o chybě někde uložit, můžete získat název výjimky!