JavaScript: Is er een manier om Chrome te laten breken bij alle fouten?

Ik ben op zoek naar een equivalent in Chrome voor de "break on all errors" functionaliteit van Firebug. In het tabblad Scripts heeft Chrome een "pause on all exceptions", maar dit is niet helemaal hetzelfde als breken bij alle fouten.

Wanneer ik bijvoorbeeld een pagina laad met de volgende code, zou ik willen dat Chrome pauzeert op de regel foo.bar = 42. In plaats daarvan, zelfs wanneer ik de "Pause on all exceptions" inschakel, krijg ik niet'het verwachte resultaat.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <script type="text/javascript">

            function doError() {
                foo.bar = 42;
            }

            window.onload = function() {
                try {
                    doError();
                } catch (e) {
                    console.log("Error", e);
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>

Je kunt de hierboven geplakte code proberen op deze pagina of met behulp van deze [jsFiddle][2].

Oplossing

Edit: De oorspronkelijke link waarmee ik antwoordde is nu ongeldig.De nieuwere URL zou https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions zijn vanaf 2016-11-11.

Ik realiseer me dat deze vraag een antwoord heeft, maar het'is niet meer accuraat. Gebruik de bovenstaande link ^


(link vervangen door bovenstaande bewerking) - je kunt het nu zo instellen dat het breekt bij alle uitzonderingen of alleen bij onbehandelde uitzonderingen. (Merk op dat je in de Bronnen tab moet zijn om de knop te zien).

Chrome's heeft nu ook een aantal andere echt nuttige breekpunt mogelijkheden toegevoegd, zoals breken op DOM veranderingen of netwerk gebeurtenissen.

Normaal zou ik een vraag niet opnieuw beantwoorden, maar ik had zelf dezelfde vraag, en ik vond dit nu-verkeerde antwoord, dus ik dacht dat ik's deze informatie hier zou plaatsen voor mensen die later kwamen zoeken. :)

Commentaren (8)

Zowat elke fout zal een exceptie werpen. De enige fouten die ik kan bedenken die niet zouden werken met de "pause on exceptions" optie zijn syntaxfouten, die gebeuren voordat de code wordt uitgevoerd, dus er is geen plaats om te pauzeren en niets van de code zal worden uitgevoerd.

Blijkbaar zal Chrome echter niet pauzeren op uitzonderingen als deze zich binnen een try-catch blok bevinden. Het pauzeert alleen op niet-gevangen uitzonderingen. Ik weet niet hoe ik dat kan veranderen.

Als je alleen maar wilt weten op welke regel de uitzondering zich voordeed (dan zou je een breekpunt kunnen zetten als de uitzondering reproduceerbaar is), het Error object dat aan het catch blok wordt gegeven heeft een stack eigenschap die laat zien waar de uitzondering zich voordeed.

Commentaren (2)

Helaas lijkt het de Developer Tools in Chrome niet te lukken om "stop on all errors", zoals Firebug doet.

Commentaren (1)