В този урок ще научите за инструкциите 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 в следващия урок.