2010-05-18 6 views
7

Lo que intento lograr es registrar un controlador global para capturar todas las excepciones no detectadas. Buscando en la web solo logré encontrar personas señalando window.onerror pero esto no funciona bien para mí. Aparentemente window.onerror solo se invoca con errores y no con excepciones. Supongamos el siguiente código:¿Cómo manejar las excepciones no detectadas en javascript sin try/catch-block?

function windowError(message, url, line) { 
     alert(message, url, line); 
    } 
    window.onerror=windowError; 
    throw("uncaught"); 

La excepción no capturada obviamente no activará el manejador windowError. (Usando Firefox 3.6.3)

¿Alguna sugerencia?

+1

El código anterior funciona muy bien en Chrome v12. Aclamaciones. –

Respuesta

2

Por lo que sé, necesitará probar/atrapar bloques para que esto suceda. Ese es el punto, que necesita saber cuándo manejar qué tipo de errores.

+0

encontró esta publicación al buscar en Google cómo capturar excepciones javascript no modificadas. No puede prever todo tipo de excepciones que sucederán en un código dado. window.onerror es una buena forma de, al menos, mostrar el error. He ido más lejos y en mi sitio publico los datos en el evento window.onerror a un método web en mi servidor y registré el error en el registro de la aplicación. – Anders

4

errores se capturan la misma manera que excepciones en javascript y, de hecho, en su ejemplo de el mensaje get alertada (Firefox 3.6.3).

+0

Eso es bastante extraño. No recibe ninguna alerta con Firefox 3.6.3. – Taloncor

+0

He probado su ejemplo en una página html simple y funciona. Es extraño que en tu Firefox no esté 'alertando' ... ¿Has probado con otro navegador? –

Cuestiones relacionadas