2010-03-05 19 views
12

Come sovrascrivere il gestore globale delle eccezioni in javascript in modo che diventi il ​​gestore di livello superiore per tutte le eccezioni non rilevate?Global javascript gestore di eccezioni (in Chrome)

EDIT: window.onerror lavoro non ha ancora, il codice è:

<HTML> 
<HEAD> 
<script language='javascript'> 
    window.onerror = function (em, url, ln) { 
     alert(em + ", " + url + ", " + ln); 
     return false; 
    } 

    function fGo() { 
     try 
     { 
      var a = b; // error here : b not defined 
     } 
     catch (e) 
     { 
      throw e; 
     } 
    } 
</script> 
</HEAD> 
<BODY> 
    <button onclick='fGo()'>GO</button> 
</BODY> 
</HTML> 

sto testando su Chrome, tra l'altro. La console di sviluppo registra l'eccezione non rilevata, ma l'avviso() in window.onerror non viene visualizzato.

risposta

14

Google Chrome non supporta window.onerror, apparentemente non è implementato nel webkit.

Aggiornamento: ora anche Chrome supporta window.onerror. (I commenti della versione 25 implicano anche versioni precedenti)

Quello che ho fatto è stato il wrapping di JQuery usando curring per creare un proxy che fa sempre un try...catch nelle funzioni di JQuery.

Lo uso in www.js-analytics.com, tuttavia la soluzione vale solo per gli script JQuery.

+0

Esatto. E WebKit ha recentemente fatto qualche passo avanti nel correggere quel bug. Non è ancora stato risolto, ma qui hai il link per gli aggiornamenti: https://bugs.webkit.org/show_bug.cgi?id=8519 –

+0

Secondo http://groups.google.com/group/js-test- driver/browse_thread/thread/14c7e6d615a2b803? pli = 1 dovrebbe essere corretto in Chrome 10 – Korny

+3

Sto usando Chrome 14 (l'ultima versione) e funziona window.onerror! – Nick

3
window.onerror = function(errorMsg, url, lineNumber) { 
    // code to run when error has occured on page 
} 
0

Forse stai cercando window.onerror Non sono sicuro se questo è disponibile su tutti i browser.

+0

Non lo è, in particolare su Safari, ma è davvero un buon inizio. –

+1

Le ultime versioni di Safari (e Chrome) lo supportano. Per riferimento, ho confermato su Safari 5.1 e Chrome 14, entrambi in Mac OS X. Non sono sicuro quando sono stati aggiunti a quei browser, ma è ora disponibile su tutti i principali browser. – Nick

Problemi correlati