JavaScript try…catch — Темы масштабирования

Обзор

Оператор try…catch является стандартной конструкцией во многих компьютерных языках. По сути, он используется для управления кодом, подверженным ошибкам. Сначала он проверяет код на возможные недостатки, а затем предпринимает шаги для исправления любых ошибок (если они возникают). Операторы try…catch — прекрасное место для хранения сложного кода при программировании.

Что такое блок try…catch в JavaScript?

Оператор try catch в javascript очень часто используется в различных языках программирования. Эти операторы используются для управления и манипулирования той конкретной частью кода, где существуют ошибки. Try-catch в javascript сначала проверяет все возможные ошибки, которые могут содержаться в коде, а затем try-catch в javascript выполняет различные действия для обработки этих ошибок (если они существуют). Мы всегда должны хранить сложный код в операторе try-catch. Оператор try и оператор catch в javascript идут парами. Теперь давайте обсудим try catch в приведенных ниже инструкциях javascript.

Оператор Try{}

Оператор try{} в try catch в javascript используется для определения конкретного блока кода, который необходимо протестировать во время выполнения программы. Если в этом коде есть какие-либо ошибки, оператор try{} передает их в блок операторов catch{}. После этого выполняются необходимые действия.

Оператор Catch{}

Оператор catch{} используется для определения блока кода, который запускается при наличии какой-либо ошибки в коде, тестируемом оператором try{}. В этом операторе catch{} могут присутствовать обработчики двух типов. Первый — это исключительный обработчик, а второй — встроенный обработчик. Блок catch выполняется только тогда, когда в блоке try присутствует какая-либо ошибка, и эту ошибку необходимо исправить. В противном случае блок catch пропускается. Блок catch запускается только после выполнения блока try. Синтаксис оператора try и catch следующий:

Теперь давайте разберемся, как работает try catch в javascript. Оператор try-catch обычно идет парой. Блок try catch в операторе javascript обычно состоит из блока try и блока catch, а последний блок является конечным блоком или обоими из них.

Сначала выполняется блок try, который ищет любую ошибку в данном блоке кода, и это вызывает исключение. После этого оператор catch выполняется для любой ошибки, обнаруженной в блоке try. Если в блоке try нет ошибок, то блок catch игнорируется. И, наконец, наступает последний блок. Этот блок выполняется до завершения потока управления программы. Давайте посмотрим на синтаксис try catch в javascript.

Описание

Оператор try — это оператор, который необходимо выполнить. Оператор catch — это тот блок, который выполняется, если в блоке try возникает какое-либо исключение. В операторе try catch в операторе javascript также есть необязательный идентификатор. Поток try catch в javascript всегда начинается с оператора try. После этого управление переходит к блоку catch. Вместе могут присутствовать захват и финальный блок. Это даст нам три формы оператора try, а именно:0005

  • попробовать… поймать
  • попробовать… наконец
  • попробовать… поймать… наконец

В каждом операторе try catch в javascript всегда должно быть более одного оператора. Это не должно быть одиночным оператором ни в одном из блоков, как и другие конструкции, такие как for, or и т. д.

Оператор try…catch в javascript состоит из двух или трех блоков операторов. Эти блоки могут быть блоком try и блоком catch, а также может быть окончательный блок catch вместе с блоками try и catch. Сначала выполняется код блока try, а затем выполняется код блока catch, если код блока try вызывает исключение. Прежде чем поток управления покинет всю конструкцию, всегда запускается функция последнего кадра.

Объект ошибки

Объект ошибки в javascript — это встроенная функция, которая предоставляет информацию об ошибке, если в коде присутствует какая-либо ошибка. У этого объекта ошибки есть два свойства: name

и message .

  • Имя : Это свойство используется для установки имени ошибки или для возврата имени ошибки.
  • Сообщение : Это свойство используется для установки сообщения или возврата сообщения об ошибке. Это сообщение будет строковым значением.

Необязательная привязка «Catch»

Необязательная привязка catch — это функция в javascript, которая используется для аргумента ошибки. Эта функция была добавлена ​​в javascript в ES10/2019. В операторе try…catch, если присутствует какая-либо ошибка, и мы хотим пропустить манипуляции с этой ошибкой, мы используем необязательную привязку catch. Синтаксис для необязательной привязки catch следующий:

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

Выход :

Объяснение : В приведенном выше примере мы проанализировали строку abcd. Эта строка анализируется как JSON с помощью метода JSON.parse. Тем не менее, это будет отображаться как ошибка. Это связано с тем, что данная строка не является допустимой строкой JSON. После этого аргумент ошибки пропускается с помощью необязательной привязки catch в блоке catch кода.

Классификация ошибок JavaScript по шести группам

Исключительная обработка в javascript — очень важная функция javascript, используемая для управления всеми возможными ошибками, которые могут возникнуть в коде. И исключительная обработка исправляет эти ошибки, чтобы обеспечить плавный поток кода.

Исключение определяется как объект, который содержит объяснение того, что происходит в коде неправильно. Исключение также определяет, где возникает ошибка в javascript. Ошибки в javascript могут появляться из-за ошибок, допущенных кем-либо из разработчиков, неправильных вводов и т.д.

Есть несколько причин возникновения исключения в коде, которые приведены ниже:

  • Если число делится на ноль. Это деление приводит к бесконечному ответу и вызывает исключение.
  • Если пользователь запрашивает файл, а этот файл отсутствует в системе.
  • Если пользователь вводит неправильный ввод.
  • Если между сеансами связи произошел разрыв сети.

Давайте теперь обсудим типы ошибок в javascript.

EvalError

EvalError — это тип ошибки объекта в javascript, который представляет собой ошибку, связанную с глобальной функцией eval(). Глобальная функция eval() может генерировать экземпляр класса EvalError, если она вызывается по любому другому имени. Ограничения на то, как этот метод может быть вызван, описаны в eval(). Сведения о создании и перехвате исключений см.

в разделе Ошибка.

RangeError

Объект RangeError в javascript можно увидеть, когда предоставленное значение не входит в набор допустимых значений этой функции. Чтобы сообщить пользователю, что значение было введено в функцию, которая не принимает диапазон ввода, включающий это значение, используется RangeError. Например, все ненулевые положительные значения могут быть входным диапазоном для функции, преобразующей сантиметры в дюймы. В этом случае будет выдана ошибка RangeError, поскольку целое число -100 находится за пределами допустимого диапазона ввода.

ReferenceError

Объект ReferenceError в javascript представляет собой ошибку, вызванную переменной, и она не определена в начале кода.

синтаксическая ошибка

Синтаксическая ошибка — это тип ошибки в javascript, который возникает, когда мы неправильно используем предопределенный синтаксис. Синтаксические ошибки обнаруживаются во время компиляции кода или во время разбора кода.

Предположим, мы определяем функцию в javascript и забываем закрыть фигурные скобки {} функции. Здесь мы получим синтаксическую ошибку.

TypeError

Объект TypeError представляет ошибку в javascript, если операция не выполняется в коде. Эти сбои операции происходят, когда значение не того типа, который ожидался. TypeError может возникнуть по следующим причинам:

  • Когда мы пытаемся изменить статическое значение.
  • Когда мы пытаемся использовать определенное значение неправильным образом.

URI (унифицированный идентификатор ресурса) Ошибка

Объект URIError в javascript представляет ошибку, если функция URI используется неправильным образом. Логический (абстрактный) или физический ресурс может быть идентифицирован с помощью

Унифицированный идентификатор ресурса (URI), строка символов, которая обычно, но не обязательно связана с Интернетом. Один ресурс отделяется от другого с помощью URI.

Ошибки времени синтаксического анализа

Синтаксические ошибки в javascript также известны как ошибка времени синтаксического анализа или ошибка синтаксического анализа. Эта ошибка возникает во время интерпретации в javascript, которая отличается от других языков программирования. В других языках эта ошибка возникает во время компиляции.

Ошибка времени синтаксического анализа — это тип ошибки в javascript, который возникает, когда мы неправильно используем предопределенный синтаксис. Синтаксические ошибки обнаруживаются во время компиляции кода или во время разбора кода. Предположим, мы определяем функцию в javascript и забываем закрыть фигурные скобки {} функции. Здесь мы получим ошибку времени разбора.

Ошибка повторного вызова

Как мы знаем, оператор try…catch используется для указания на любое исключение в программе javascript. Исключение Rethrow Error можно увидеть в том случае, когда блок catch не может исправить ошибку, пойманную оператором try.

Исключение повторного броска заставляет исходный брошенный объект снова генерироваться. Например

Unconditional Catch-block

В операторе try catch в javascript, если присутствует блок catch, блок catch выполняется, если в блоке try обнаружено какое-либо исключение. Например, если в заданном коде присутствует исключение, выполнение переносится в блок catch.

Блок catch представляет спецификатор, содержащий значение исключения. Это значение исключения будет находиться только внутри блока catch.

Блоки условного захвата

Условный блок catch можно создать, добавив блок try…catch с операторами if…else if…else. Например:

Идентификатор исключения

Когда в блоке try присутствует исключение, exception_var сохраняет значение исключения (исключительное значение). Пользователь может использовать это значение позже в программе, чтобы получить информацию об этом исключении. Исключительный идентификатор присутствует в области действия блока catch. Кроме того, пользователь может исключить значение этого исключения, если ему это больше не требуется. Синтаксис исключительного идентификатора следующий:

Блок finally

Блок finally — это блок кода, состоящий из операторов, которые необходимо выполнить после блока try и блока catch. Но эти операторы должны выполняться до блока try…catch…finally.

Блок-схема, иллюстрирующая поток оператора try…catch…finally выглядит следующим образом

  • Перед выполнением блока try (в коде не создаются исключения).
  • Непосредственно перед тем, как операторы блока catch будут выполняться нормально.
  • Непосредственно перед выполнением инструкций оператора потока управления ( break, continue, return, continue ) в блоке try and catch.

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

Метод onerror()

onerror — это обработчик событий в javascript. Это была одна из первых функций, касающихся обработки ошибок в javascript. Событие ошибки запускается в объекте окна, когда на этой конкретной веб-странице появляется какое-либо исключение. Ниже приведен пример, чтобы понять это.

Объяснение : В приведенном выше примере мы создали простую веб-страницу. В теге script мы создали событие onerror и присвоили ему функцию, которая создаст предупреждение, и появится сообщение типа «Произошла ошибка».

Обработчик onerror предоставляет информацию в трех частях, которые обсуждаются в следующем разделе.

Сообщение об ошибке

Это часть сообщения, которое браузер отобразит в случае возникновения какой-либо ошибки.

URL-адрес

Это файл, в котором возникает ошибка

Номер строки

Номер строки указывается в URL-адресе, в котором возникает ошибка.

Global Catch

Запускается глобальный обработчик ошибок catch, чтобы пользователи библиотеки могли манипулировать ими и обрабатывать исключения. Выброшенные исключения могут остановить цикл программы.

Вложенные блоки try

Вложенные блоки try определяются как блоки try внутри блока try. Но в javascript легко понять другие вложенные операторы. Но вложенный блок try в javascript становится нечитаемым, так что лучше этого не делать.

Используя вложенные блоки try, пользователь может использовать только один оператор catch для многих операторов try. Но делать это необязательно. Пользователь также может написать оператор catch для каждого оператора try. Например:

Примеры

Теперь давайте рассмотрим несколько примеров оператора try catch в javascript, чтобы лучше понять его.

Пример 1. Оператор JavaScript try…catch для отображения необъявленной переменной.

Выход :

Объяснение : В приведенном выше примере мы создаем две переменные, а именно num и deno. После этого мы присвоили этим переменным их значение, равное 50, переменной num и x переменной deno. Эта переменная не определена. При попытке напечатать переменную программа выдает ошибку. Эта ошибка фиксируется в блоке catch.

Пример 2. Оператор JavaScript try…catch…finally

Вывод :

Объяснение : В приведенном выше примере мы создаем две переменные, а именно num и deno. После этого мы присвоили этим переменным их значение, равное 50, переменной num и x переменной deno. В приведенной выше программе возникает ошибка, и эта ошибка перехватывается блоком catch. Последний блок будет выполняться в любой ситуации. (если программа работает успешно или возникает ошибка). Вам нужно использовать оператор catch или finally после оператора try. В противном случае программа выдаст ошибку Uncaught SyntaxError: Missing catch или finally after try.

Заключение

  • Функция try catch в javascript используется для управления и манипулирования тем конкретным разделом кода, в котором существуют ошибки. Функция try-catch в javascript сначала проверяет все возможные ошибки, которые могут содержаться в коде.
  • Оператор try{} в try-catch в javascript используется для определения конкретного блока кода, который необходимо протестировать во время выполнения программы.
  • Оператор catch{} используется для определения блока кода, который запускается, когда в коде, тестируемом оператором try{}, есть какая-либо ошибка.
  • Объект ошибки в javascript — это встроенная функция, которая предоставляет информацию об ошибке, если в коде присутствует какая-либо ошибка.
  • Необязательная привязка catch — это функция в javascript, которая используется для аргумента ошибки. Эта функция была добавлена ​​в javascript в ES10/2019, которая используется, если присутствует какая-либо ошибка, и мы хотим пропустить манипуляции с этой ошибкой.
  • Ошибки JavaScript делятся на шесть групп: ошибки EvalError, RangeError, ReferenceError, SyntaxError, TypeError и URI (унифицированный идентификатор ресурса).
  • Блок finally — это блок кода, состоящий из операторов, которые необходимо выполнить после блока try и блока catch.
  • onerror — это обработчик событий в javascript, который запускается для объекта окна, когда на этой конкретной веб-странице появляется какое-либо исключение.
  • Обработчик onerror предоставляет информацию в трех частях: сообщение об ошибке, URL-адрес и номер строки.

Javascript Try Catch: все, что вам нужно знать

Главный инженер-программист EPAM Anywhere I, Руфат Хасларов, проведет вас по JavaScript try catch в этом кратком уроке кодирования с примерами.

Допускали ли вы когда-нибудь ошибку в своем коде, которую потом нельзя было выполнить? Или вы отправили запрос на сервер, который дал сбой и привел к неожиданным последствиям? Конечно, у вас есть — как и у многих из нас.

Такие ошибки имеют загадочные имена и называются исключениями. Вы можете задаться вопросом, как лучше с ними справиться. Каждый язык программирования дает нам некоторые инструменты для этого, и JavaScript не исключение.

Чтобы устранить эти ошибки в JavaScript, мы изучим и будем использовать конструкцию try/catch. Давайте катиться!

Обработка ошибок с помощью JavaScript try catch

В общем, try/catch в JavaScript выглядит следующим образом:

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

В дополнение к конструкции try/catch в этом контексте также широко используется ключевое слово «throw». Применяя его, мы можем создавать собственные настраиваемые ошибки. Это делает наше приложение и бизнес-логику более мощными, понятными и, я бы сказал, удобочитаемыми.

Первый реальный пример, который пришел мне в голову, — это проверка данных:

Во фрагменте кода мы пытаемся получить токен из свойства запроса запроса. Если токена нет или значение пустое, мы буквально «кидаем» ошибку, которая перехватывается блоком catch и отображается в логах. Наше исследование не останавливается на достигнутом.

Поскольку Error — это класс, очевидно, что для ясности можно создать собственные классы ошибок. Проверьте это:

В этом примере мы создали наш собственный класс ValidationError и использовали его для обработки ошибок конкретной бизнес-логики выше. В логах пишет «Не удалось аутентифицировать ValidationError. Не получили [токен]». Применяя этот метод, вы можете определить тип ошибки и по-разному ее обработать:

Повторное создание ошибки

Последний метод, который я здесь упомяну, — повторная выдача ошибки. Используйте его, когда вам нужно обработать ошибку на верхнем этапе, а не внутри конкретного обработчика.

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

Теперь давайте немного рефакторим наш код. Код проверки лучше вынести в отдельную функцию для удобства чтения:

Использование блока finally

Иногда в случаях попытки/перехвата и успеха/неудачи может потребоваться какое-то завершающее и независимое действие. Основной вариант использования следующий: код открывает файловый дескриптор; читает/обрабатывает данные внутри него; и, в случае ошибки или успешного завершения, файл должен быть закрыт, а ресурсы освобождены.

Для этой цели вы можете использовать конструкцию try/catch/finally в JavaScript:

Обратите внимание, что весь вышеупомянутый код является синхронным. В современном JavaScript (ES2017 и новее) try/catch/finally можно полностью использовать с асинхронными функциями. Подробнее см. в этом руководстве.

Предположим, что функция аутентификации асинхронная:

Итак, если обещание отклонено, блок catch обработает его так же, как описано выше.