[Перевод] Тихий Promise, который убьёт ваш сервер Node.js

У вас есть продакшен-сервер. Он спокойно работает часами. А потом внезапно падает. Без предупреждения, без graceful-деградации. Просто мёртв. Виновник? Одна строчка кода, которая выглядит совершенно безобидно...

https://habr.com/ru/articles/988132/

#nodejs #промисы #асинхронность #promise #await #async #javascript #typescript #error_handling #обработка_ошибок

Тихий Promise, который убьёт ваш сервер Node.js

У вас есть продакшен-сервер. Он спокойно работает часами. А потом внезапно падает. Без предупреждения, без graceful-деградации. Просто мёртв. Виновник? Одна строчка кода, которая выглядит совершенно...

Хабр

Хватит писать try-catch в контроллерах: как я причесал ошибки в Express и перестал бояться деплоя

Знаете это чувство, когда открываешь контроллер в Express проекте, чтобы поправить одну строчку логики, и видишь ЭТО ? Бесконечная вложенность, проверки на существование полей, ручной парсинг ошибок от базы данных и, конечно же, его величество try-catch , который занимает 80% файла. Я тоже через это проходил. В каждом новом микросервисе я копипастил одни и те же функции обработки ошибок. В одном проекте я ловил ошибки Mongoose через err.name === 'ValidationError' , в другом — через instanceof . Где-то мы отдавали { error: "message" } , где-то { status: "fail", msg: "..." } . В какой-то момент мне это надоело. Мне захотелось инструмент, который я могу просто подключить одной строкой, и он сам поймет, что "E11000" от Mongo — это 409 Conflict, а ошибка Zod — это 400 Bad Request. При этом я не хотел тянуть в проект тяжелые зависимости. Так родилась библиотека ds-express-errors . Сегодня я расскажу, зачем я ее написал и почему она может сэкономить вам кучу нервов.

https://habr.com/ru/articles/981456/

#error_handling #express #graceful_shutdown #javascript #nodejs #opensourse #middleware #custom_config_parameters

Хватит писать try-catch в контроллерах: как я причесал ошибки в Express и перестал бояться деплоя

Знаете это чувство, когда открываешь контроллер в Express проекте, чтобы поправить одну строчку логики, и видишь ЭТО ? Бесконечная вложенность, проверки на су��ествование полей, ручной парсинг ошибок...

Хабр

10 Принципов отказоустойчивости (с примерами на Javascript)

С хорошей отказоустойчивостью интерфейс остаётся стабильным и понятным, пользователь получает предсказуемый и комфортный опыт, а сбои отдельных компонентов не приводят к сбоям всей системы. В этой статье речь не будет идти о конкретных примерах реализации повышения отказоустойчивости. Понять то, что нужно подключать сервисы мониторинга ошибок вы можете и без меня. Хорошая отказоустойчивость начинается с мышления. Я хочу, чтобы эта фраза въелась вам в самую подкорку. Важно не просто латать ошибки по мере их появления, а комплексно подходить к решению — формировать правильное понимание, разрабатывать устойчивые подходы и строить систему, способную адекватно реагировать на возможные сбои. Принципы описанные далее универсальные и подойдут к большому количеству сфер, даже вне области информационных технологий. Перейти к 10 принципам

https://habr.com/ru/articles/918574/

#отказоустойчивость #UX #архитектура #ошибки #стабильность #fallback #устойчивость #frontend #error_handling #надежность

10 Принципов отказоустойчивости (с примерами на Javascript)

Отказоустойчивость (англ. resilience , fault tolerance ) — это способность системы продолжать работу, несмотря на внутренние ошибки, сбои в зависимостях или непредвиденные...

Хабр

[Перевод] Об (отсутствии) синтаксической поддержки обработки ошибок в Go

Программисты на Go уже давно и долго жалуются на слишком многословную обработку ошибок. Все мы близко (а иногда и болезненно) знакомы со следующим шаблоном кода: x, err := call() if err != nil { // обработка err} Проверка if err != nil встречается настолько часто, что может становиться объёмнее остального кода. Обычно это происходит в программах, выполняющих много вызовов API, в которых обработка ошибок рудиментарна и они просто возвращаются. Некоторые программы в итоге выглядят примерно так: func printSum(a, b string) error { x, err := strconv.Atoi(a) if err != nil { return err } y, err := strconv.Atoi(b) if err != nil { return err } fmt.Println("result:", x + y) return nil } Из десятка строк кода тела этой функции реальную работу выполняют только четыре (вызовы и последние две строки). Остальные шесть строк — это шум. Код слишком многословен, поэтому неудивительно, что жалобы на обработку ошибок уже годами находятся на вершине списков в опросах разработчиков. (Какое-то время жалобы на обработку ошибок обгоняла только досада из-за отсутствия дженериков, но теперь, когда Go поддерживает дженерики, обработка ошибок снова вернулась на первое место.) Команда разработчиков Go воспринимает отзывы сообщества со всей серьёзностью, поэтому мы много лет пытались придумать решение этой проблемы.

https://habr.com/ru/articles/915468/

#обработка_ошибок #синтаксис #error_handling #ошибки

Об (отсутствии) синтаксической поддержки обработки ошибок в Go

Программисты на Go уже давно и долго жалуются на слишком многословную обработку ошибок. Все мы близко (а иногда и болезненно) знакомы со следующим шаблоном кода: x, err := call() if err != nil { //...

Хабр
Why Use Structured Errors in Rust Applications?

Going against the common wisdom of “using anyhow for applications”.

Dmitrii Aleksandrov

[Перевод] Обработка ошибок и их стратеги

В мире разработки бизнес-приложений, особенно построенных по принципам Domain-Driven Design (DDD) , важным элементом архитектуры является обработка ошибок. Неправильно реализованная стратегия может привести к логическому хаосу и плохому пользовательскому опыту. Представьте, если ошибка базы данных попадёт напрямую в UI — это не только некрасиво, но и опасно. Слоистая архитектура предполагает чёткое разделение ответственности:

https://habr.com/ru/articles/909414/

#exception #php #error_handling #error_reporting

Обработка ошибок и их стратеги

Введение В мире разработки бизнес-приложений, особенно построенных по принципам Domain-Driven Design (DDD) , важным элементом архитектуры является обработка ошибок. Неправильно реализованная стратегия...

Хабр
How to Resolve "RenderFlex children have non-zero flex but incoming width constraints are unbounded" in Flutter - Yet Another Programmer's Blog

If you are working with Flutter layouts and encounter the error: > RenderFlex children have non-zero flex but incoming width constraints are unbounded. Don’t worry—this is a common […]

Yet Another Programmer's Blog

Прагматичное функциональное программирование в Java

Прагматичное функциональное программирование в Java при помощи монады XResult<T> , которая сочетает в себе свойства Optional<T> , Result<T> и Either<L,R> Читать далее ...

https://habr.com/ru/articles/876736/

#monad #optional #result #either #error_handling

Прагматичное функциональное программирование в Java

Мотивация Поводом к написанию этой статьи стал "Pragmatic FP" манифест в котором автор утверждает что прагматичное функциональное программирование (далее FP) требует использования всего двух монад -...

Хабр

#RustLang #programming #error_handling #codingtips
🚀 Rustaceans! Let's Talk About the ? Operator! 🚀

Did you know the `?` operator in Rust can simplify your error handling? It automatically propagates errors, making your code cleaner and more readable!

Have you used the `?` operator in your Rust projects? Share your experiences and tips below! 👇

[Перевод] Полное руководство по обработке ошибок в Python

Я часто сталкиваюсь с разработчиками, очень хорошо знающими механику обработки ошибок в Python, однако когда я начинаю выполнять ревью их кода, он оказывается далеко неидеальным. Исключения в Python — это одна из тех областей, поверхностный уровень которого знает большинство, но многие разработчики даже не догадываются о существовании более глубокого, почти тайного уровня. Если вы хотите протестировать себя по этой теме, то проверьте, сможете ли вы ответить на следующие вопросы: Когда следует перехватывать исключения, генерируемые вызываемыми вами функциями, а когда этого делать не нужно? Как узнать, какие классы исключений нужно перехватывать? Что нужно делать при перехвате исключений для их «обработки»? Почему перехватывание всех исключений считается порочной практикой, и когда делать это приемлемо? Вы готовы узнать секреты обработки ошибок в Python? Тогда поехали!

https://habr.com/ru/articles/853056/

#обработка_ошибок #исключения #перехват_ошибок #exceptions #error_handling

Полное руководство по обработке ошибок в Python

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

Хабр