В этом руководстве вы узнаете об операторах try… catch… finally для обработки исключений в JavaScript с помощью примеров.
Эти try
, catch
и finally
блоки используются для обработки исключений (типа ошибки). Прежде чем вы узнаете о них, нужно узнать о типах ошибок в программировании.
Типы ошибок
В программировании в коде могут быть два типа ошибок:
Синтаксическая ошибка : ошибка в синтаксисе. Например, если вы пишете consol.log('your result');
, вышеуказанная программа выдает синтаксическую ошибку. В console
приведенном выше коде есть ошибка в написании .
Ошибка выполнения : этот тип ошибки возникает во время выполнения программы. Например,
вызов недопустимой функции или переменной.
Эти ошибки, возникающие во время выполнения, называются исключениями . Теперь давайте посмотрим, как вы можете обрабатывать эти исключения.
Оператор JavaScript try… catch
Оператор try… catch
используется для обработки исключений. Его синтаксис:
try ( // body of try ) catch(error) ( // body of catch )
Основной код находится внутри try
блока. При выполнении try
блока, если возникает ошибка, он переходит в catch
блок. catch
Блок обрабатывает ошибки , как в заявлениях об улове.
Если ошибки не возникает, код внутри try
блока выполняется, а catch
блок пропускается.
Пример 1. Отображение необъявленной переменной
// program to show try… catch in a program const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); // forgot to define variable a console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); )
Вывод
NaN Обнаружена ошибка Сообщение об ошибке: ReferenceError: a не определено
В приведенной выше программе переменная не определена. Когда вы пытаетесь напечатать переменную, программа выдает ошибку. Эта ошибка зафиксирована в catch
блоке.
JavaScript try… catch… finally Заявление
Вы также можете использовать try… catch… finally
оператор для обработки исключений. finally
Блок выполняется как , когда код выполняется успешно , или в случае возникновения ошибки.
Синтаксис try… catch… finally
блока:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Пример 2: попробуйте… поймать… наконец Пример
const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); ) finally ( console.log('Finally will execute every time'); )
Вывод
NaN Обнаружена ошибка Сообщение об ошибке: ReferenceError: a не определено Наконец, будет выполняться каждый раз
В приведенной выше программе возникает ошибка, и эта ошибка перехватывается catch
блоком. finally
Блок будет выполняться в любой ситуации (если программа выполняется успешно , или в случае возникновения ошибки).
Примечание : вам нужно использовать оператор catch
или finally
после try
оператора. В противном случае программа выдаст ошибку Uncaught SyntaxError: Missing catch или, наконец, после попытки.
JavaScript try … catch в setTimeout
Не try… catch
будет перехватывать исключение, если оно произошло в " синхронизированном " коде, например, в setTimeout (). Например,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Вышеуказанное try… catch
не будет работать, потому что движок уже покинул try… catch
конструкцию, а функция выполняется позже.
try… catch
Блок должен быть внутри этой функции , чтобы поймать исключение внутри таймерной функции. Например,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Вы также можете использовать throw
оператор с try… catch
оператором для использования пользовательских исключений. Например, некоторое число делится на 0 . Если вы хотите рассматривать это Infinity
как ошибку в программе, вы можете вызвать определяемое пользователем исключение, используя throw
оператор для обработки этого условия.
Вы узнаете об операторе throw в JavaScript в следующем руководстве.