Come posso assicurarmi che tutti gli errori JavaScript siano scritti alla console degli strumenti per sviluppatori Chrome?
-
26-10-2019 - |
Domanda
Considera la seguente funzione JavaScript:
function triggerError() {
var something = undefined;
// The next line will trigger 'TypeError: Cannot call ... of undefined'
something.doesNotExist();
}
Quando si corre triggerError();
Direttamente il seguente errore viene scritto sulla console degli strumenti per sviluppatori Chrome in rosso, che è previsto:
TypeError: Cannot call method 'doesNotExist' of undefined
Tuttavia, quando triggerError();
viene eseguito da un ascoltatore di eventi nessun errore viene scritto sulla console (la chiamata della funzione muore silenziosamente something.doesNotExist();
) che rende le cose piuttosto difficili da eseguire il debug in caso di errori di battitura, ecc.
Come posso assicurare che tutti gli errori siano scritti alla console degli strumenti per sviluppatori Chrome, inclusi errori generati nel codice che vengono eseguiti dagli ascoltatori di eventi/callback?
Un ovvio lavoro sarebbe quello di aggiungere try { ... } catch (x) { console.log(x) };
Dappertutto, ma dal momento che non so in anticipo dove aggiungerò errori di battitura, questo non è una via da seguire.
Soluzione
Potresti mostrare il tuo campione, ho provato a riprodurlo sul seguente frammento e funziona perfettamente per me:
<script>
function triggerError() {
var something = undefined;
// The next line will trigger 'TypeError: Cannot call ... of undefined'
something.doesNotExist();
}
window.addEventListener("click", triggerError, true);
</script>
<body onclick="triggerError()">
</body>
Altri suggerimenti
Potresti usare un try catch
:
function triggerError() {
try{
var something = undefined;
// The next line will trigger 'TypeError: Cannot call ... of undefined'
something.doesNotExist();
}catch(ex){
console.error(ex.message);
}
}