У цьому підручнику ви дізнаєтеся про оператори try… catch … konačno для обробки винятків у JavaScript за допомогою прикладів.
Ці try
, catch
та finally
блоки використовуються для обробки винятків (типу помилки). Перш ніж дізнатися про них, потрібно знати про типи помилок у програмуванні.
Типи помилок
У програмуванні в коді можуть бути два типи помилок:
Помилка синтаксису : Помилка в синтаксисі. Наприклад, якщо ви пишете consol.log('your result');
, вищевказана програма видає синтаксичну помилку. Орфографія console
є помилкою у наведеному вище коді.
Помилка виконання : цей тип помилки виникає під час виконання програми. Наприклад,
виклик недійсної функції або змінної.
Ці помилки, що виникають під час виконання, називаються винятками . Тепер давайте подивимося, як ви можете впоратися з цими винятками.
Спробуйте JavaScript … Заява
Оператор 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
оператор для обробки винятків. 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: Відсутній улов або нарешті після спроби.
Спробуйте JavaScript … зловити в 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
оператор для обробки цієї умови.
Ви дізнаєтесь про Заява про викид JavaScript у наступному підручнику.