Кажется, что Error
и Exception
- это одно и то же: их обоих можно бросить с помощью оператора throw
и перехватить с помощью блока try catch
.
Какая разница между ошибкой и исключением в Javascript?
Ответ 1
Синтаксис JavaScript
Ошибки и исключения синтаксически синонимичны в JavaScript. Язык реализует только ключевое слово Error
(через window.Error
). Вы можете определить пользовательские ошибки, используя Error.constructor
, который принимает name
и message
в качестве параметров.
Ошибка JavaScript
Существует также сахар с номером строки, который можно использовать для отслеживания ошибок в коде. JavaScript имеет только Error
. Слышите ли вы, что люди говорят о Exceptions
или Errors
, в JavaScript они ссылаются на одно и то же.
Браузеры делают различие: ReferenceError
(при доступе к переменной с именем, которого нет в куче, или когда вы делаете опечатку (подробнее здесь.), TypeError
также является известным JS ошибка, больше здесь.
Исключение JavaScript
Известный JavaScript Exception
- это DOM Exception 8
. Это происходит при доступе к объекту, который не готов, например, к XMLHttpRequest
, который не выполнил запрос.
РеализацияПри использовании блоков try catch
или try catch finally
вы будете иметь дело как с JavaScript Exception
, так и с Error
. Разница в кодах не имеет никакого значения.
За кулисами браузеры используют тот же window.Error
constructor
. Exception
является экземпляром Error
с name
и message
, которые содержат "Исключение".
Попробуйте: var myCustomError = new Error("myException", "An exception occurred.");
. "Исключение" - это текст в строке. Подробнее о Error
здесь.
Конвенция
По соглашению, есть разница между Error
и Exception
. Error
указывает на явное нарушение. TypeError
или ReferenceError
означает, что вы не следуете языковым спецификациям.
Exception
генерируется при доступе к ответу XMLHttpRequest
до его завершения. Error
- это крик "ты нарушил закон", а Exception
- это "Почти там!" накладка на плечо. Надеюсь, аналогия поможет!
Ответ 2
Основываясь на лекции, ошибки генерируются движком JavaScript, а исключения - разработчиком. это только соглашение об именах.
- JavaScript выдает ошибки
- Разработчики бросают исключения
В техническом аспекте та же структура (вещь).
Ответ 3
Я думаю, что ошибка - это нечто серьезное, что вы не должны пытаться поймать Исключением является то, что нужно поймать, насколько это возможно с ним.
Ошибка в том, что в коде происходит что-то неправильное или недействительное. Это может вызвать ошибку памяти, это то, что никогда не должно происходить и не может быть обработано.
В то время как исключение бросает что-то, когда в коде выполняются определенные условия. Это может не соответствовать реальной ошибке.
Ответ 4
try {
throw "throwing string";
} catch (ex) {
console.log(ex);
}
Если мы запустим этот код, мы увидим, что предложение catch будет получать все, что мы бросаем, используя ключевое слово throw. Это означает, что если мы бросим строку, мы получим строку, если мы бросим объект, мы получим объект, если мы бросим число, мы получим число.
Примечание: Поэтому, если мы сгенерируем Error, мы получим Error.
Отсюда вывод: все, что мы выбрасываем, используя , ключевое слово throw будет рассматриваться как исключение. Если мы не поймаем (или не обработаем) это, тогда наш код Javascript будет взорван.