Обработка ошибок в Go

Обработка ошибок — это один из самых важных аспектов написания надёжного кода. В Go к этому вопросу подошли нестандартно: вместо традиционного механизма try/catch , как в Java или Python, ошибки просто возвращаются как значения. Изначально это может показаться странным, но на практике этот подход делает обработку ошибок более явной и честной. В этой статье мы разберёмся с тем, когда стоит использовать panic , какие есть распространённые ошибки при его использовании и как правильно обрабатывать исключительные ситуации в Go.

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

#ошибки_в_go #обработка_ошибок #go #golang #обработка_ошибок_в_go

Обработка ошибок в Go

Обработка ошибок — это один из самых важных аспектов написания надёжного кода. В Go к этому вопросу подошли нестандартно: вместо традиционного механизма try/catch , как в Java или Python, ошибки...

Хабр

[Перевод] Об (отсутствии) синтаксической поддержки обработки ошибок в 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 { //...

Хабр

[Перевод] Временные и постоянные ошибки

При работе с внешними интеграциями мы часто реализуем базовую реакцию на ошибки. В большинстве случаев достаточно ограничиться response.raise_for_status() , а детальную обработку оставить на потом. Нередко мы не управляем ошибками. Не знаем в действительности ни как поведет себя внешняя система, ни какие типы этих ошибок следует от нее ожидать. В самом деле, бывает непросто учесть все возможные крайние случаи и обеспечить соответствующее ответное действие. Что делать, когда сервер возвращает ошибку 503? А если превышен лимит запросов? А, допустим, истекло время ожидания и тому подобное? Мы неизбежно получаем длинный список исключений и обработчиков, которые необходимо реализовать, задокументировать и протестировать. Однако ситуацию можно улучшить…

https://habr.com/ru/companies/selectel/articles/911602/

#selectel #перевод_с_английского #разработка #разработка_приложений #разработка_вебприложений #обработка_ошибок

Временные и постоянные ошибки

При работе с внешними интеграциями мы часто реализуем базовую реакцию на ошибки. В большинстве случаев достаточно ограничиться response.raise_for_status() , а детальную обработку оставить на потом....

Хабр

pytest.raises: ловим исключения правильно

Привет, Хабр! Сегодня говорим о pytest.raises . Не о его наличии в экосистеме — это известно каждому, кто хоть раз писал тесты. Говорим о правильном использовании. Потому что между «тест проходит» и «тест действительно что-то проверяет» — пропасть.

https://habr.com/ru/companies/otus/articles/901858/

#python #программирование #pytestraises #pytest #тестирование_исключений #обработка_ошибок #тестирование_кода #обработка_исключений #интеграционные_тесты

pytest.raises: ловим исключения правильно

Привет, Хабр! Сегодня говорим о pytest.raises . Не о его наличии в экосистеме — это известно каждому, кто хоть раз писал тесты. Говорим о правильном использовании. Потому...

Хабр

Обработка ошибок Axios

Привет, Хабр! Меня зовут Алёна, я senior фронтенд-разработчик отдела разработки ПО для розничного бизнеса в Райффайзенбанке. Недавно передо мной встала задача улучшения пользовательского опыта обработки ошибок запросов к бэкенду. Я решила комплексно исследовать эту тему на примере HTTP-клиента Axios. Если при отправке запросов с помощью Axios возникает ошибка — клиентское приложение получает аргумент, который может быть экземпляром объекта, производного от системного класса Error, или любым типом. Он может содержать много информации и не всегда понятно, что самое важное для определения типа исключения и способа обработки. Поэтому я выделала 4 категории ошибок запросов, сделанных при помощи Axios, которые нужно по-разному интерпретировать.

https://habr.com/ru/companies/raiffeisenbank/articles/882664/

#axios #typescript #javascript #обработка_ошибок #react #reactjs #ошибка_сервера #status_code #response #request

Обработка ошибок Axios

Привет, Хабр! Меня зовут Алёна, я senior фронтенд-разработчик отдела разработки ПО для розничного бизнеса в Райффайзенбанке. Недавно передо мной встала задача улучшения пользовательского опыта...

Хабр

Обработка ошибок в Go — Не традиционный подход

Обработка ошибок — это важная часть любого языка программирования. Она помогает предотвратить незаметные сбои в приложениях, перехватывать неожиданные поведения и предоставлять осмысленные ответы, когда что-то идет не так. Однако подход Go к обработке ошибок часто приводит к написанию многословного и повторяющегося кода, что вызывает недовольство среди разработчиков. Давайте разберем, почему это происходит, какие ограничения это накладывает и какие решения могут быть предложены.

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

#Go #golang #обработка_ошибок

Обработка ошибок в Go — Не традиционный подход

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

Хабр

Обработка ошибок REST API: лучшие практики

Привет, Хабр! Меня зовут Екатерина Саяпина, я Product Owner платформы

https://habr.com/ru/companies/ru_mts/articles/879586/

#REST_API #обработка_ошибок #HTTPкоды #API #код_ошибки #диагностика_API #программирование #вебразработа

Обработка ошибок REST API: лучшие практики

Привет, Хабр! Меня зовут Екатерина Саяпина, я Product Owner платформы МТС Exolve . Коды ошибок — последнее, что хочет видеть разработчик в ответе API. И означают они одно из двух: либо есть проблема в...

Хабр

Обработка ошибок Axios

Привет, Хабр, меня зовут Алёна, я senior фронтент-разработчик в отдела разработки ПО для розничного бизнеса в Райффайзенбанке. Недавно наша команда решила улучшить пользовательский опыт обработки ошибок запроса к бекенду и я решила комплексно исследовать эту тему и собрать воедино все лучшие практики. Начтем с того, что при обработке ошибок Axios запросов существуют 4 ситуации, которые необходимо по-разному интерпретировать.

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

#axios #typescript #javascript #обработка_ошибок #react #reactjs

Обработка ошибок Axios

Привет, Хабр, меня зовут Алёна, я senior фронтент-разработчик в отдела разработки ПО для розничного бизнеса в Райффайзенбанке. Недавно наша команда решила улучшить пользовательский опыт обработки...

Хабр

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

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

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

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

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

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

Хабр

И опыт, сын ошибок трудных: обрабатываем ошибки в Spring Boot

Долгое время разрабатывая микросервисы в разных командах, я сталкивался с типовой задачей: созданием максимально информативного ответа на запрос, когда произошла какая-то ошибка. Особенно это актуально для систем с пользовательским фронтендом, большим количеством интеграций или систем, которые представляют свой API как продукт. Во многих случаях это решалось выдачей сообщения «Ошибка системы» с HTTP-кодом 500. Из раза в раз меня не покидало ощущение, что решению этой задачи не уделяется должного внимания и времени. В текущем проекте нам пришлось пройти все круги ада, изменить несколько подходов и реализаций. И здесь я постарался описать, как это было, и сформулировать выводы, которые мы сделали на каждом шаге решения проблемы.

https://habr.com/ru/companies/T1Holding/articles/834288/

#обработка_ошибок #springboot

И опыт, сын ошибок трудных: обрабатываем ошибки в Spring Boot

Долгое время разрабатывая микросервисы в разных командах, я сталкивался с типовой задачей: созданием максимально информативного ответа на запрос, когда произошла какая-то ошибка. Особенно это...

Хабр