Иногда при написании скриптов приходится обрабатывать различные случаи, которые выходят за рамки нормального выполнения программы. Дело в том, что если не обрабатывать всевозможные исключения в JavaScript , то наш скрипт даст сбой. И о том, что такое исключения и как их обрабатывать в 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) эта конструкция используется безумно часто и без неё немыслимо серьёзное программирование в принципе. Но в будущем всё может поменяться.