JavaScript опит ... хващане ... накрая изявление

В този урок ще научите за инструкциите try … catch … final за обработка на изключения в 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

The 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 в следващия урок.

Интересни статии...