Добавить в корзинуПозвонить
Найти в Дзене
Javascript

Хватит кидать ошибки в JS как в 2015-м

В JavaScript давно есть нормальные инструменты для ошибок, но многие до сих пор бросают просто throw new Error("something failed"). А потом пытаются понять, где именно всё сломалось. Что стоит использовать: - Custom Error классы - чтобы хранить statusCode, code, details и другие поля не в строке, а в структуре - Error.cause - чтобы оборачивать ошибку и не терять исходную причину - AggregateError - когда параллельно упало сразу несколько операций Главная идея простая: ошибка должна быть не просто текстом для лога, а нормальным объектом с контекстом. Плохой вариант: throw new Error("Could not load user") Лучше: throw new HttpError("Could not load user", 500, { cause: err }) Так код становится понятнее, дебаг быстрее, а логи перестают превращаться в археологию.

Хватит кидать ошибки в JS как в 2015-м

В JavaScript давно есть нормальные инструменты для ошибок, но многие до сих пор бросают просто throw new Error("something failed").

А потом пытаются понять, где именно всё сломалось.

Что стоит использовать:

- Custom Error классы - чтобы хранить statusCode, code, details и другие поля не в строке, а в структуре

- Error.cause - чтобы оборачивать ошибку и не терять исходную причину

- AggregateError - когда параллельно упало сразу несколько операций

Главная идея простая: ошибка должна быть не просто текстом для лога, а нормальным объектом с контекстом.

Плохой вариант:

throw new Error("Could not load user")

Лучше:

throw new HttpError("Could not load user", 500, { cause: err })

Так код становится понятнее, дебаг быстрее, а логи перестают превращаться в археологию.