Ogni volta che si verifica un errore all'interno di un gestore eventi, l'esecuzione del codice viene interrotta completamente in modo che non venga richiamata la seconda chiamata all'evento.L'errore Javascript interrompe l'esecuzione del codice
Ad esempio:
$(function() {
window.thisDoesntExist();
}
$(function() {
//Do something unharmful and unrelated to the first event
}
si può facilmente risolvere il problema in questo esempio (semplificato) con l'aggiunta di try/catch in entrambe le funzioni anonime, ma in realtà queste funzioni spesso aggiungere molti altri gestori di eventi che a sua volta richiederebbe prova/cattura. Finisco con codice molto ripetitivo riempito con blocchi try/catch.
I miei progetti hanno un design modulare in cui ogni funzionalità si trova in un JS diverso (e viene concatenata durante un processo di compilazione). Sto cercando un modo più generico per gestire gli errori all'interno di ogni funzione in modo che l'errore non fermi l'esecuzione del codice delle altre funzionalità.
Ho già provato seguenti soluzioni: - window.onerror (anche se si torna vero in questa funzione, l'esecuzione di codice viene interrotta) - $ (window) .error() => deprecato e l'esecuzione di codice si ferma
Hai letto la mia domanda? Puoi facilmente risolvere il problema in questo esempio (semplificato) aggiungendo try/catch in entrambe le funzioni anonime, ma in realtà queste funzioni spesso aggiungono molti altri gestori di eventi che a loro volta richiederebbero try/catch. Finisco con codice molto ripetitivo riempito con blocchi try/catch. – Webberig
Beh, forse questo è il compromesso che devi fare se vuoi che il tuo codice sia il più robusto possibile. – CBroe
@Webberig, certo che lo so. Il requisito di base di cui hai bisogno è di continuare ad eseguire il codice su (qualsiasi) errore. L'unico modo è usare try catch. È il primo passo. Successivamente, è possibile utilizzare una richiamata di errore o emettere un evento di errore o qualsiasi altra cosa per rendere la gestione degli errori solida e flessibile. Puoi riferirti al codice sorgente di Requirejs, usa anche il try catch. https://github.com/jrburke/requirejs/blob/master/require.js –