Книга: JavaScript. Подробное руководство, 6-е издание
14.6. Обработка ошибок
14.6. Обработка ошибок
Свойство onerror
объекта Window
- это обработчик событий, который вызывается во всех случаях, когда необработанное исключение достигло вершины стека вызовов и когда броузер готов отобразить сообщение об ошибке в консоли JavaScript. Если присвоить этому свойству функцию, функция будет вызываться всякий раз, когда в окне будет возникать ошибка выполнения программного кода JavaScript: присваиваемая функция станет обработчиком ошибок для окна.
Исторически сложилось так, что обработчику события опеrror
объекта Window
передается три строковых аргумента, а не единственный объект события, как в других обработчиках. (Другие объекты в клиентском JavaScript также имеют обработчики onerror
, обрабатывающие различные ошибочные ситуации, но все они являются обычными обработчиками событий, которым передается единственный объект события.) Первый аргумент обработчика window.опеrror
- это сообщение, описывающее произошедшую ошибку. Второй аргумент - это строка, содержащая URL-адрес документа с JavaScript-кодом, приведшим к ошибке. Третий аргумент - это номер строки в документе, где произошла ошибка.
Помимо этих трех аргументов важную роль играет значение, возвращаемое обработчиком опеrror
. Если обработчик опеrror
возвращает true
, это говорит броузеру о том, что ошибка обработана и никаких дальнейших действий не требуется; другими словами, броузер не должен выводить собственное сообщение об ошибке. К сожалению, по историческим причинам в Firefox обработчик ошибок должен возвращать true, чтобы сообщить о том, что ошибка обработана.
Обработчик оnеrror
является пережитком первых лет развития JavaScript, когда в базовом языке отсутствовала инструкция try/catch
обработки исключений. В современном программном коде этот обработчик используется редко. Однако на время разработки вы можете определить свой обработчик ошибок, как показано ниже, который будет уведомлять вас о всех происходящих ошибках:
// Вывести сообщение об ошибке в виде диалога, но не более 3 раз
window.опеrror = function(msg, url, line) {
if (опеrror.num++ < опеrror.max) {
alert("ОШИБКА: " + msg + "n" + url + + line):
return true;
}
}
опеrror.max = 3;
опеrror.num = 0;
- Перехват ошибок
- Обработка перехваченных ошибок
- ГЛАВА 4 Обработка исключений
- B1.7. Функции обработки ошибок
- Обработка ошибок
- 26.7. Обработка дополнительных аргументов
- Проверка диска на наличие ошибок
- А.2. Поиск ошибок в динамической памяти
- Векторная обработка исключений
- Обработка исключений
- 2.2. Базовая обработка командной строки
- Пример: обработка ошибок