Подтвердить что ты не робот

Какая разница между ошибкой и исключением в Javascript?

Кажется, что Error и Exception - это одно и то же: их обоих можно бросить с помощью оператора throw и перехватить с помощью блока try catch.

4b9b3361

Ответ 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 будет взорван.