Я не могу найти способ поймать сообщение об ошибке в firefox:
window.addEventListener("error", handleException, false);
...
function handleException(e) {
alert(e);
return false;
}
...
<script>
throw new Error('sdasd');
</script>
Это очень хорошо относится к методу handleException
, однако параметр e
является error event
под firefox , и я не знаю, как получить связанное сообщение.
Например, в chrome я получаю либо сообщение через e.message
, потому что после того, как ошибка выйдет из строя, чтобы не быть пойманной, на уровне окна появилась автоматическая ошибка (см. эта скрипка: окончательная ошибка "Недоступна" ), которая содержит исходную ошибку, которую я поднял вручную.
Итак, чтобы иметь такое же поведение в firefox (если вы запустите скрипт под firefox, вы увидите, что сообщение "undefined" ). Я нашел обходное решение, состоящее в инкапсуляции функции повышения ошибок для установки руководства "последний error":
function err(I_sText) {
g_lastManualError = new Error(I_sText);
throw g_lastManualError; //this variable is global so I can get the message from anywhere
}
Поэтому вместо выполнения throw new Error(..)
я вызываю только err(..)
. Это работает, по крайней мере, для пользовательских исключений, которые являются моей самой большой проблемой. В моем обработчике handleException
я консультирую глобальную переменную.
Вы знаете, как я мог бы сделать иначе? Я не доволен этим решением.
Спасибо, S.