style attribute javascript exception events web-applications try-catch

javascript - attribute - title html



¿Javascript dispara un evento para excepciones no controladas/no detectadas? (2)

Intenta usar un controlador onerror. Docs de MDN. Esto le permitirá hacer algo cuando se detecte un error, pero probablemente no le permitirá continuar de una manera elegante que lo haría con un bloque try / catch. Tenga en cuenta que sin duda hay diferencias entre los navegadores en cuanto a cómo se maneja esto.

Estoy buscando registrar excepciones javascript no controladas. ¿Hay un evento que se dispara cuando no se detecta una excepción? Estoy buscando detectar las excepciones antes de que causen errores de JavaScript en el navegador, pero prefiero no ejecutar toda mi aplicación dentro de un try / catch. Cualquier ayuda sería apreciada. ¡Gracias!

Actualización: tvanfosson señaló onerror como una posibilidad. No forma parte de una especificación y solo está disponible en navegadores basados ​​en IE o Gecko.

Para obtener más información, http://books.google.com/books?id=tKszhx-XkzYC&pg=PA386&lpg=PA386&dq=safari+onerror+javascript&source=web&ots=gQaGbpUnjG&sig=iBCtOQs0aH_EAzSbWlGa9v5flyo#PPA387,M1

Tabla de compatibilidad OnError - http://www.quirksmode.org/dom/events/error.html

La documentación de Mozilla - https://developer.mozilla.org/en/DOM/window.onerror

Informe de error WebKit - https://bugs.webkit.org/show_bug.cgi?id=8519


Mira este violín:

http://jsfiddle.net/xYsRA/1/

window.onerror = function (msg, url, line) { console.log("Caught[via window.onerror]: ''" + msg + "'' from " + url + ":" + line); return true; // same as preventDefault }; window.addEventListener(''error'', function (evt) { console.log("Caught[via ''error'' event]: ''" + evt.message + "'' from " + evt.filename + ":" + evt.lineno); console.log(evt); // has srcElement / target / etc evt.preventDefault(); }); throw new Error("Hewwo world. I crash you!!!"); throw new Error("Hewwo world. I can only crash you once... :(");

Que impresiones:

Caught[via window.onerror]: ''Uncaught Error: Hewwo world. I crash you!!!'' from http://fiddle.jshell.net/xYsRA/1/show/:32 fiddle.jshell.net:21 Caught[via ''error'' event]: ''Uncaught Error: Hewwo world. I crash you!!!'' from http://fiddle.jshell.net/xYsRA/1/show/:32 fiddle.jshell.net:26 ErrorEvent {lineno: 32, filename: "http://fiddle.jshell.net/xYsRA/1/show/", message: "Uncaught Error: Hewwo world. I crash you!!!", clipboardData: undefined, cancelBubble: false…} fiddle.jshell.net:27/

Notas:

  • Si elimina las líneas "return true" / "evt.preventDefault ()", luego de registrar el error, se imprimirá en la consola JS de la forma habitual.

  • Contrario a las declaraciones anteriores, window.onerror funcionó en todos los navegadores que probé. Sin embargo, el método addEventListener es probablemente mejor de todos modos y proporciona una semántica más rica.