JavaScript - Обработка исключений

В JavaScript обработка исключений - это механизм, который позволяет вам обрабатывать ошибки и непредвиденные ситуации в вашем коде.
Это помогает предотвратить сбои программы и позволяет грациозно обрабатывать ошибки, предоставляя альтернативные пути кода.

✏️ Синтаксис

Основной синтаксис обработки исключений в JavaScript выглядит следующим образом:

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

В приведенном выше коде:

  • Блок try содержит код, который может вызвать исключение.
  • Если исключение выбрасывается внутри блока try, оно перехватывается блоком catch.
  • Блок catch содержит код для обработки исключения.
    Вы можете использовать параметр error для доступа к информации об исключении.
  • Блок finally содержит код, который всегда будет выполняться, независимо от того, было ли выброшено исключение или поймано.
    Этот блок является необязательным.

📘 Пример

Давайте рассмотрим пример, чтобы понять обработку исключений в JavaScript:

javascript
try {
    let num1 = parseInt(prompt("Введите целое число: "));
    let num2 = parseInt(prompt("Введите еще одно целое число: "));
    let result = num1 / num2;
    console.log("Результат: ", result);
} catch (error) {
    if (error instanceof TypeError) {
        console.log("Ввод не является целым числом!");
    } else if (error instanceof RangeError) {
        console.log("Делитель не может быть нулем!");
    } else {
        console.log("Произошло исключение: ", error);
    }
} finally {
    console.log("Выполнение программы завершено.");
}

В приведенном выше коде мы пытаемся разделить два числа, введенные пользователем.
Однако существует несколько сценариев, которые могут вызвать выброс исключений:

  • Если пользователь вводит нецелочисленное значение, будет выброшено исключение TypeError.
  • Если пользователь вводит ноль в качестве делителя, будет выброшено исключение RangeError.
  • Любое другое непредвиденное исключение будет перехвачено общим блоком catch.

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

Не забывайте всегда обрабатывать исключения в вашем коде, чтобы обеспечить надежность и предотвратить непредвиденные сбои.