Читаем сообщения об ошибках и стектрейсы
Сообщение об ошибке — это не наказание, а инструкция по починке. Большинство ошибок прямо говорят, что не так, если уметь их читать.
The error message is your friend. — каждый сеньор хоть раз
Новичка пугает красный текст в консоли, но в 80% случаев ошибка прямо называет проблему: что произошло, где и почему. Английский тут предельно шаблонный — те же слова повторяются из ошибки в ошибку. Научившись их читать, ты чинишь баги быстрее, чем гуглишь.
Анатомия типичной ошибки
TypeError: Cannot read property 'name' of undefined
at getUser (app.js:42:15)
at main (app.js:10:3)
Разбор:
TypeError — тип ошибки (ошибка типа)
Cannot read property 'name' — не может прочитать поле 'name'
of undefined — у значения undefined (его нет)
at getUser (app.js:42:15) — где: функция getUser, файл, строка 42
at main — кто вызвал: функция main
Вывод: в getUser обращаемся к .name у того, чего нет.
Ключевые слова в ошибках
| Слово / фраза | Перевод | Обычно значит |
|---|---|---|
| unexpected | неожиданный | синтаксис не там, где парсер ждал |
| undefined / null | не определено / пусто | обращение к несуществующему |
| is not a function | не является функцией | вызываешь то, что не вызывается |
| not found | не найдено | файл/модуль/ресурс отсутствует |
| permission denied | доступ запрещён | не хватает прав |
| connection refused | соединение отклонено | сервис недоступен/не запущен |
| timeout / timed out | превышено время ожидания | ответ не пришёл вовремя |
| out of memory | нехватка памяти | процесс съел всю память |
| out of bounds | выход за границы | индекс вне массива |
| already in use | уже используется | порт/ресурс занят |
Типы исключений
| Exception | Перевод | Причина |
|---|---|---|
| SyntaxError | синтаксическая ошибка | код написан неправильно |
| TypeError | ошибка типа | операция над неподходящим типом |
| ValueError | ошибка значения | верный тип, но неверное значение |
| NullPointerException | обращение к null | работа с пустой ссылкой (Java) |
| IndexError | ошибка индекса | индекс за пределами коллекции |
| KeyError | ошибка ключа | нет такого ключа в словаре |
Полезные фразы
I'm getting a "connection refused" error. — Получаю ошибку «соединение отклонено». The stack trace points to line 42. — Стектрейс указывает на строку 42. It throws a TypeError on undefined. — Кидает TypeError на undefined. The error is misleading, the real cause is… — Ошибка вводит в заблуждение, реальная причина…
Частые ошибки рус-говорящих
- Паниковать при виде стектрейса. Читай сверху вниз: первая строка — что, остальные — откуда. Своя самая верхняя строка из твоего кода — главная зацепка.
- Путать «undefined» и «null».
undefined— значение не задавалось;null— намеренно пусто. Обе ведут к ошибкам при обращении к полям. - Гуглить ошибку целиком с путями и числами. Убери из текста свои имена файлов, строки и id — гугли обобщённую формулировку.
Практика
- Найди в своём проекте любую недавнюю ошибку и разбери её по схеме «что / где / почему».
- Выпиши из таблицы 5 ключевых слов, которые встречал в реальных логах.
- Попробуй сформулировать причину ошибки одной фразой на английском.
Слова из логов и предупреждений
Кроме самих исключений, логи полны слов про уровень важности и состояние. Они подсказывают, на что вообще стоит реагировать, а что — шум.
| Слово | Перевод | Насколько серьёзно |
|---|---|---|
| INFO | информация | норма, просто событие |
| WARN / WARNING | предупреждение | стоит заметить, но не авария |
| ERROR | ошибка | что-то сломалось |
| FATAL / CRITICAL | критическая | всё упало, срочно |
| DEBUG / TRACE | отладочное | детали для разбора |
| stale | устаревшее, протухшее | данные/кеш неактуальны |
| pending | в ожидании | ещё не завершилось |
Полезный приём: ищи в ошибке слова expected и got (или actual). Формулировка «expected X but got Y» — подарок: она прямо называет, что система ждала и что получила. «Expected a string but got undefined» означает, что куда-то прилетел undefined вместо строки — и ты сразу знаешь, что искать.
Ключевые слова ошибок
| Ключ | Смысл | Где встречается |
|---|---|---|
| undefined / null | нет значения | обращение к пустому |
| not found | не найдено | файл/модуль отсутствует |
| refused / timeout | отклонено / таймаут | сервис недоступен |
| expected … got … | ждал … получил … | прямая подсказка |
Читай стектрейс сверху вниз, ищи свою верхнюю строку и формулировку «expected/got» — она почти всегда называет проблему прямо.
Итоги
Ошибка — это инструкция: тип, сообщение и место почти всегда называют проблему напрямую. Английский в ошибках шаблонный, ключевые слова (undefined, not found, refused, timeout, out of bounds) повторяются. Читай стектрейс сверху вниз, ищи свою верхнюю строку и гугли обобщённую формулировку без личных путей и чисел.