Come posso assicurarmi che tutti gli errori JavaScript siano scritti alla console degli strumenti per sviluppatori Chrome?

StackOverflow https://stackoverflow.com/questions/9318728

  •  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.

È stato utile?

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);
   }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top