// throw выражение
//throw "Hello"; // Выражение может быть любым
// Инструкция throw прерывает выполнение скрипта и заставляет интерпретатор искать ближайший обработчик исключения, т.е ветку catch
// Т.е ближайший обработчик в стеке вызова функций.
/*
Зачем это нужно?
Вы вряд ли будете писать скрипты, которые вызывают определенную последовательность действий.
Большинство программ полезны, потому что они обрабатывают какие-либо внешние данные,
наример данные вводимые пользователем при помощи любого устройства ввода.
Данные могут приходить из файловой системы или сторонних сервисов при помощи api.
Мы не знаем какие данные мы получим, поэтому нужно иметь возможность обрабатывать исключения.
Когда мы что-то пишем в программе, то интерпретатор сам обрабатывает исключения.
Например, 10 = "string"; // ReferenceError: invalid assignment left-hand side
ReferenceError - это один из дочерних объектов Error.
Все эти объекты мы можем создавать вручную.
*/
/* var myError = new Error("My Error Message");
console.log(myError.name); // Error
console.log(myError.message); // My Error Message
// Эту ошибку мы можем выбросить и ловить где-то дальше в коде.
throw myError; */
// Для всех типов ошибок существует свой конструктор SyntaxError ReferenceError и т.д
// Например, функция принимает значение n, которое не должно быть > 10. Если оно больше, то мы кидаем исключение.
var calculate = function(n) {
if(n > 10) throw new Error("n should be less than 10");
return n + 10;
}
//calculate(20); // Error: n should be less than 10
// Кидать исключения лучше только в крайних случаях, когда на правильности данных держится весь смысл выполнения скрипта.
// В большинстве случаев вы можете обойтись без исключений!
// Если вы собираетесь использовать JS для базовых вещей, то вам не придется обрабатывать исключения.
// ПОСМОТРИМ КАК ОБРАБАТЫВАТЬ ИСКЛЮЧЕНИЯ
/* try {
инструкции
} catch (идентификатор) {
инструкции
} finally {
инструкции
} */
// Блок catch или finally могут отсутствовать, но при этом они не могут отсутствовать одновременно.
try {
calculate(20);
} catch (e) {
console.log("Can't execute calculate: " + e.message); // Can't execute calculate: n should be less than 10
}
//throw "Hello"; // Выражение может быть любым
// Инструкция throw прерывает выполнение скрипта и заставляет интерпретатор искать ближайший обработчик исключения, т.е ветку catch
// Т.е ближайший обработчик в стеке вызова функций.
/*
Зачем это нужно?
Вы вряд ли будете писать скрипты, которые вызывают определенную последовательность действий.
Большинство программ полезны, потому что они обрабатывают какие-либо внешние данные,
наример данные вводимые пользователем при помощи любого устройства ввода.
Данные могут приходить из файловой системы или сторонних сервисов при помощи api.
Мы не знаем какие данные мы получим, поэтому нужно иметь возможность обрабатывать исключения.
Когда мы что-то пишем в программе, то интерпретатор сам обрабатывает исключения.
Например, 10 = "string"; // ReferenceError: invalid assignment left-hand side
ReferenceError - это один из дочерних объектов Error.
Все эти объекты мы можем создавать вручную.
*/
/* var myError = new Error("My Error Message");
console.log(myError.name); // Error
console.log(myError.message); // My Error Message
// Эту ошибку мы можем выбросить и ловить где-то дальше в коде.
throw myError; */
// Для всех типов ошибок существует свой конструктор SyntaxError ReferenceError и т.д
// Например, функция принимает значение n, которое не должно быть > 10. Если оно больше, то мы кидаем исключение.
var calculate = function(n) {
if(n > 10) throw new Error("n should be less than 10");
return n + 10;
}
//calculate(20); // Error: n should be less than 10
// Кидать исключения лучше только в крайних случаях, когда на правильности данных держится весь смысл выполнения скрипта.
// В большинстве случаев вы можете обойтись без исключений!
// Если вы собираетесь использовать JS для базовых вещей, то вам не придется обрабатывать исключения.
// ПОСМОТРИМ КАК ОБРАБАТЫВАТЬ ИСКЛЮЧЕНИЯ
/* try {
инструкции
} catch (идентификатор) {
инструкции
} finally {
инструкции
} */
// Блок catch или finally могут отсутствовать, но при этом они не могут отсутствовать одновременно.
try {
calculate(20);
} catch (e) {
console.log("Can't execute calculate: " + e.message); // Can't execute calculate: n should be less than 10
}
Комментариев нет:
Отправить комментарий