В 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 })Так код становится понятнее, дебаг быстрее, а логи перестают превращаться в археологию.
