Иногда при написании скриптов приходится обрабатывать различные случаи, которые выходят за рамки нормального выполнения программы. Дело в том, что если не обрабатывать всевозможные исключения в JavaScript , то наш скрипт даст сбой. И о том, что такое исключения и как их обрабатывать в JavaScript , мы и поговорим.
Иногда при написании скриптов приходится обрабатывать различные случаи, которые выходят за рамки нормального выполнения программы. Дело в том, что если не обрабатывать всевозможные исключения в JavaScript, то наш скрипт даст сбой. И о том, что такое исключения и как их обрабатывать в JavaScript, мы и поговорим.
Для обработки исключений в JavaScript (впрочем, в других языках тоже) используется конструкция try-catch (попытаться-перехватить). Суть этой конструкции следующая: try - блок, в котором мы выполняем код нормального выполнения скрипта. И если в этом блоке возникает исключительная ситуация, то она передаётся в блок catch, где уже обрабатывается.
Давайте с Вами напишем простой скрипт, которые будет генерировать исключение, если имя пользователя (допустим, полученное из формы регистрации) меньше 3-х символов.
function checkName(name) {
try {
if (name.length < 3) throw "Имя слишком короткое";
alert("Имя написано верно!");
}
catch (er) {
alert(er);
}
}Вначале мы создаём функцию, которой передают параметр name. Дальше мы создаём блок try, в котором проверяем если имя больше или равно 3-м символам, то тогда поздравляем пользователя с тем, что он ввёл правильно своё имя. А если имя меньше 3-х символов, то мы выбрасываем (throw) исключение. В блоке catch это исключение перехватывается и выводится текст этого исключения. Советую запустить эту функцию: вначале передав нормальный параметр (строку больше или хотя бы 3 символа), а потом строку, меньше 3-х символов.
Ещё давайте рассмотрим блок finally в JavaScript. Данный блок срабатывает в любом случае, несмотря на то: вызывалось исключение или нет. Давайте с Вами дополним нашу функцию, сказав "Спасибо!" нашему пользователю.
function checkName(name) {
try {
if (name.length < 3) throw "Имя слишком короткое";
alert("Имя написано верно!");
}
catch (er) {
alert(er);
}
finally {
alert("Спасибо!");
}
}Как видите, независимо от того было исключение или нет, всё равно блок finally срабатывает.
Лично моё мнение, что обработка исключений в JavaScript - это достаточно редкое явление просто потому, что этому нет особого применения. Ведь согласитесь, что прошлую задачу мы могли бы решить гораздо проще, безо всяких try и catch. Но в других языках программирования (например, в Java) эта конструкция используется безумно часто и без неё немыслимо серьёзное программирование в принципе. Но в будущем всё может поменяться.
