JavaScript: Er det en måte å få Chrome til å bryte på alle feil?

Jeg leter etter en ekvivalent i Chrome til "pause på alle feil" -funksjonaliteten til Firebug. I kategorien Skript har Chrome en "pause på alle unntak", men dette er ikke helt det samme som å bryte på alle feil.

For eksempel, når jeg laster inn en side med følgende kode, vil jeg at Chrome skal bryte på linjen foo.bar = 42. I stedet, selv når jeg aktiverer "Pause på alle unntak", får jeg ikke det forventede resultatet.

<!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>

Du kan prøve koden limt inn ovenfor på denne siden eller bruke denne [jsFiddle][2].

Løsning

Edit: Den opprinnelige lenken jeg svarte med er nå ugyldig. Den nyere nettadressen er https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions fra og med 2016-11-11.

Jeg innser at dette spørsmålet har et svar, men det er ikke lenger nøyaktig. Bruk lenken ovenfor ^.


(lenke erstattet av redigert ovenfor) - du kan nå sette den til å bryte på alle unntak eller bare uhåndterte. (Merk at du må være i Kilder-fanen for å se knappen).

Chrome har også lagt til noen andre veldig nyttige breakpoint-funksjoner nå, for eksempel å bryte på DOM-endringer eller nettverkshendelser.

Normalt ville jeg ikke svare på et spørsmål på nytt, men jeg hadde det samme spørsmålet selv, og jeg fant dette nå feil svaret, så jeg skjønte at jeg ville legge denne informasjonen her for folk som kom senere i søket. :)

Kommentarer (8)

Omtrent hvilken som helst feil vil kaste et unntak. De eneste feilene jeg kan tenke meg som ikke ville fungere med "pause på unntak" -alternativet er syntaksfeil, som skjer før noen av koden blir utført, så det er ikke noe sted å pause uansett, og ingen av koden vil kjøre.

Tilsynelatende vil Chrome ikke pause på unntaket hvis det er inne i en try-catch-blokk skjønt. Det bare pauser på uncaught unntak. Jeg vet ikke om noen måte å endre det på.

Hvis du bare trenger å vite hvilken linje unntaket skjedde på (da kan du sette et bruddpunkt hvis unntaket er reproduserbart), har Error -objektet gitt til fangstblokken en stack -egenskap som viser hvor unntaket skjedde.

Kommentarer (2)

Dessverre ser det ut til at utviklerverktøyene i Chrome ikke klarer å "stoppe på alle feil", slik Firebug gjør.

Kommentarer (1)