Обработка ошибок JavaScript - httpdoc.ru

Обработка ошибок JavaScript

Есть ряд причин, которые могут вызвать ошибки:

  • Ввод недопустимого значения в любое поле формы.
  • Ссылка на несуществующие объекты или функции.
  • Ошибки математических операций.
  • Проблема с сетевым подключением.

Все это так, runtime errors и каждый язык должен иметь соответствующие меры для обработки этих ошибок. В Javascript есть несколько операторов и методов, которые могут обрабатывать эти ошибки.

Заявление, используемое при обработке ошибок

Заявление Описание
пытаться Оператор try содержит код, в котором могут быть ошибки.
ловить Оператор catch обрабатывает ошибку.
бросать Оператор throw позволяет создавать собственные ошибки.
наконец Оператор finally выполняет код после try and catch независимо от результата.

Заявление try ... catch

Этот try-catch оператор используется для проверки ошибок выполнения и их обработки. Код, который может вызвать ошибку, будет помещен в try блок инструкции, а код для обработки ошибки помещен в catch блок

Синтаксис:

try { 
    // Код, который может вызвать ошибку 
     } catch (error) { 
    // Действие, выполняемое при возникновении ошибки 
    }

Если в какой-то момент в блоке try возникает ошибка, выполнение кода немедленно передается из блока try в блок catch. catch Блок будет игнорироваться , если ошибка не обнаружена в try блоке, и программа продолжит выполнение.

Пример
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title> JavaScript Error Handling </title> 
</head> 
<body>
 <script>
  try {
   var greet = "Hi, JavaScript!";
   document.write(greet);
        
  // Trying to access a non-existent variable
   document.write(welcome);
        
  // If error occurred following line won't execute
 alert("All statements are executed successfully.");
   } catch(error) {
  // Handle the error
   alert("Caught error: " + error.message);
  }
     
  // Continue execution
   document.write("<p>Hello World!</p>");
</script>
</body>
</html>

Окончательное заявление

finally Блок будет всегда выполнять, независимо от того, произошла ли ошибка в Ьгу блоке или нет. В приведенном ниже примере попробуйте указать допустимое значение один раз и недопустимое значение в другой раз, а затем проверьте выполнение finally инструкции.

Пример
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title> JavaScript Error Handling finally Statement </title>
</head>
<body>
 <script>
  // Assigning the value returned by the prompt dialog box to a variable
  var num = prompt("Enter a positive integer between 0 to 100");
    
  // Storing the time when execution start
  var start = Date.now();
    
  try {
   if(num > 0 && num <= 100) {
    alert(Math.pow(num, num)); // the base to the exponent power
     } else {
    throw new Error("An invalid value is entered!");
     }
    } catch(c) {
    alert(c.message);
    } finally {
  // Displaying the time taken to execute the code
    alert("Execution took: " + (Date.now() - start) + "ms");
    }
</script>
</body>
</html>

Выбрасывание ошибок

По throw заявлению вы можете вручную выдать ошибку, которая до сих пор выполнялась автоматически с помощью javascript. Общий синтаксис оператора throw: throw expression;

Посмотрите на пример ниже, чтобы лучше понять это.

Пример
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>JavaScript Error Handling throw Statement </title>
</head>
<body>
 <script>
  var num = prompt("Please enter an integer value");
    
  try {
   if(num == "" || num == null || !Number.isInteger(+num)) 
    {
    throw new Error("Invalid value!");
   } else {
      document.write("Correct value!");
   }
   } catch(c) {
      document.write(c.message);
   }
</script>
</body>
</html>

Теперь мы собираемся создать функцию cuberoot (), чтобы найти кубический корень числа. Это можно сделать просто с помощью встроенной функции JavaScript Math.cbrt() , но проблема здесь в том, что она возвращает NaN для отрицательных чисел, не давая никаких подсказок о том, что пошло не так.

Пример
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title> JavaScript Error Handling try Statement </title>
</head>
<body>
 <script>
  function cuberoot(number) {
  // Throw error if number is negative
  if(number < 0) {
  throw new Error("Sorry, can't calculate cube root of a negative number.");
   } else {
    return Math.cbrt(number);
   }
    }
        
   try {
    cuberoot(125);
    cuberoot(729);
    cuberoot(-9);
    cuberoot(1000);
        
   // If error is thrown following line won't execute
    alert("All calculations are performed successfully.");
   } catch(c) {
   // Handle the error
     alert(c.message);
  }
</script>
</body>
</html>

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