<MyRusakov.ru />

React JS, Redux, ES2015 с Нуля до Гуру

React JS, Redux, ES2015 с Нуля до Гуру

Данный курс - это обширный курс по JavaScript и фреймворку React, который позволит Вам с нуля создавать мощные современные, динамические JavaScript-приложения.

Вы узнаете о тонкостях работы с "профессиональным" JavaScript, а так же узнаете о нововведениях в его новый стандарт ES2015, Вы узнаете, как организовать профессиональное окружение для FrontEnd, изучите профессиональный фреймворк - ReactJS.

А в практической части с полного нуля будет создано мощное и быстрое динамическое приложение, где Вы на практике познакомитесь, как создавать очень гибкую и расширяемую архитектуру, для разработке функционала любой сложности.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (9):

sync.o sync.o 20.04.2011 21:39:26

Михаил, а можно ли использовать try-catch для достижения кроссбраузерности?

Ответить

Admin Admin 20.04.2011 21:40:53

Кроссбраузерность достигается, в основном, HTML и CSS. И немного JavaScript, однако, try-catch используется, но достаточно редко.

Ответить

sync.o sync.o 20.04.2011 21:55:49

Ну напр., try работает ли какая-то функция в IE, если ошибка, то catch.

Ответить

Admin Admin 20.04.2011 21:59:33

Проблем с работой функций в IE в большинстве случаев не возникает, разве что за малым исключением, но действительно try-catch используется для их обработки.

Ответить

mackay mackay 14.07.2013 17:47:35

Михаил,я только начинаю понимать javascript, function checkName(name) вот name мы выбираем по id, вот так: var name = getElementById('name');?

Ответить

Admin Admin 14.07.2013 21:38:58

Вопрос вообще не понятен.

Ответить

mackay mackay 14.07.2013 22:08:43

например есть input с айди name: <input id="name"></input>, и что бы передать данные через POST мы делаем так var name = getElementById('name').val();

Ответить

Admin Admin 15.07.2013 10:23:06

Да.

Ответить

sergeyJS sergeyJS 25.02.2015 12:08:05

Кстати, если нужно просто посмотреть/залогировать ошибки на клиентах - можно вообще не использовать try-catch. Достаточно заюзать один из сервисов отслеживания JS-ошибок: t.onthe.io/js/errors/, trackjs.com, jslogger.com. Я остановился на первом из-за его бесплатности и простоты. Нужно скопировить и вставить всего 1 строку кода. Сразу видишь какие JS-ошибки происходят у пользователей, насколько они частые, в каких браузерах и тд.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.