Hľadám ekvivalent funkcie "break on all errors" prehliadača Firebug v prehliadači Chrome. Na karte Skripty má Chrome funkciu "pozastaviť pri všetkých výnimkách", ale to nie je úplne to isté ako prerušenie pri všetkých chybách.
Napríklad pri načítaní stránky s nasledujúcim kódom by som chcel, aby sa Chrome prerušil na riadku foo.bar = 42
. Namiesto toho, aj keď zapnem "Pozastaviť na všetkých výnimkách", nedostanem očakávaný výsledok.
<!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>
Môžete vyskúšať kód vložený vyššie na tejto stránke alebo pomocou tohto jsFiddle.
Edit: Pôvodný odkaz, ktorým som odpovedal, je teraz neplatný.Novšia adresa URL by bola https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions od 2016-11-11.
Uvedomujem si, že táto otázka má odpoveď, ale už nie je presná. Použite vyššie uvedený odkaz ^
(odkaz nahradený vyššie upraveným) - teraz môžete nastaviť, aby sa prerušil pri všetkých výnimkách alebo len pri neobsluhovaných. (Všimnite si, že na zobrazenie tlačidla musíte byť na karte Zdroje).
V prehliadači Chrome pribudli aj niektoré ďalšie skutočne užitočné možnosti prerušenia, napríklad prerušenie pri zmenách DOM alebo sieťových udalostiach.
Za normálnych okolností by som'znovu neodpovedal na otázku, ale sám som mal rovnakú otázku a našiel som túto teraz už nesprávnu odpoveď, tak som si povedal, že túto informáciu sem dám pre ľudí, ktorí prišli na rad neskôr pri hľadaní :)
Takmer každá chyba vyhodí výnimku. Jediné chyby, ktoré ma napadajú a ktoré by nefungovali s možnosťou "pause on exceptions", sú syntaktické chyby, ktoré sa vyskytnú pred vykonaním akéhokoľvek kódu, takže aj tak nie je kde pozastaviť a žiadny kód sa nespustí.
Chrome však zrejme nepozastaví výnimku, ak je vnútri bloku try-catch. Pozastaví sa len pri nezachytených výnimkách. Neviem o žiadnom spôsobe, ako to zmeniť.
Ak potrebujete len vedieť, na ktorom riadku sa výnimka stala (potom by ste mohli nastaviť bod prerušenia, ak je výnimka reprodukovateľná), objekt Error
daný do bloku catch má vlastnosť stack
, ktorá ukazuje, kde sa výnimka stala.