Что такое ошибка

Урок: Что такое ошибка

Введение

Когда мы пишем код, почти всегда наступает момент, когда что-то идёт не так. Программа не работает, как ожидалось, появляется сообщение в консоли, или вообще всё «падает».

Представь, что ты собираешь мебель по инструкции. Если перепутать шаги или потерять деталь, результат будет неправильным. Ошибка — это сигнал, что что-то пошло не так.

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

Важно не просто «исправить ошибку», а понять:

  • почему она произошла;
  • как её избежать;
  • как правильно с ней работать.

Что такое ошибка в JavaScript

Ошибка — это ситуация, когда программа не может выполнить код корректно.

Рассмотрим простой пример:

try {
  console.log(user.name);
} catch (e) {
  console.log('ReferenceError:', e.message);
}

Если переменная user не определена, мы получим ошибку:

ReferenceError: user is not defined

Это означает:

  • программа не знает, что такое user;
  • выполнение кода остановлено.

Ошибка — это сигнал от JavaScript: «я не могу продолжить выполнение».


Типы ошибок

Ошибки бывают разными, но важно понимать основные категории.

Синтаксические ошибки

Это ошибки в написании кода.

try {
  new Function('let = name "Stepan";');
} catch (e) {
  console.log('синтаксис не разбирается:', e.name);
}
console.log('правильно было бы: let name = "Stepan";');

Такой код не запустится вообще.

JavaScript даже не сможет начать выполнение, потому что синтаксис нарушен.


Ошибки во время выполнения (runtime)

Это ошибки, которые возникают во время выполнения программы.

try {
  let user = null;
  console.log(user.name);
} catch (e) {
  console.log('TypeError:', e.message);
}

Результат:

TypeError: Cannot read properties of null

Здесь:

  • код написан правильно;
  • но во время выполнения происходит ошибка.

Логические ошибки

Это самые коварные ошибки — программа работает, но даёт неправильный результат.

let a = 5;
let b = 10;

let result = a - b; // ожидали сложение

console.log(result);

Здесь нет ошибки в консоли, но результат неверный.

Такие ошибки сложнее всего находить.


Как JavaScript обрабатывает ошибки

По умолчанию, если возникает ошибка, программа останавливается.

try {
  console.log('Начало');
  undefinedFunction();
  console.log('Конец');
} catch (e) {
  console.log('до «Конец» не дошли:', e.name);
}

Результат:

Начало
ReferenceError

Строка "Конец" не выполнится.

Это важно понимать: ошибка прерывает выполнение кода.


Обработка ошибок через try/catch

Чтобы программа не «падала», можно перехватывать ошибки.

try {
  let user = null;
  console.log(user.name);
} catch (error) {
  console.log('Произошла ошибка');
}

Результат:

Произошла ошибка

Разберём:

  • try — блок, где может произойти ошибка;
  • catch — блок, который её обрабатывает;
  • error — объект с информацией об ошибке.

Теперь программа не ломается, а продолжает работать.


Получение информации об ошибке

В catch можно посмотреть детали:

try {
  let user = null;
  console.log(user.name);
} catch (error) {
  console.log(error.message);
}

Результат:

Cannot read properties of null

Это помогает понять, что именно пошло не так.


Генерация своих ошибок

Иногда нужно создать ошибку вручную.

function withdraw(balance, amount) {
  if (amount > balance) {
    throw new Error('Недостаточно средств');
  }

  return balance - amount;
}
console.log('успешное снятие:', withdraw(100, 40));

Здесь:

  • throw — выбрасывает ошибку;
  • Error — создаёт объект ошибки.

Теперь можно обработать её:

try {
  withdraw(100, 200);
} catch (error) {
  console.log(error.message);
}

Результат:

Недостаточно средств

Это полезно, когда нужно контролировать логику программы.


Ошибки в асинхронном коде

С асинхронностью ошибки работают немного иначе.

async function main() {
  try {
    await Promise.reject('Ошибка!');
  } catch (error) {
    console.log(error);
  }
}

main();

Здесь try/catch работает только с await.

Если забыть await, ошибка не поймается — это важный момент.


Где это используется на практике

Ошибки возникают везде:

  • при работе с API;
  • при обработке пользовательского ввода;
  • при работе с файлами;
  • при сложной логике.

Например:

  • сервер может вернуть ошибку;
  • пользователь может ввести неправильные данные;
  • данные могут отсутствовать.

Обработка ошибок позволяет:

  • не «ломать» приложение;
  • показывать понятные сообщения пользователю;
  • контролировать поведение программы.

Итоговое понимание

Ошибка — это сигнал о том, что программа не может корректно выполнить код.

Ключевая идея в том, что ошибки — это не проблема, а инструмент. Они помогают понять, где что-то пошло не так.

Важно не только уметь читать ошибки, но и управлять ими:

  • предотвращать;
  • обрабатывать;
  • создавать при необходимости.

Если программа — это система, то ошибки — это её способ сообщить о сбоях. И задача разработчика — научиться правильно на них реагировать.