Асинхронная обработка ошибок сложна ( parallelprogrammer.substack.com )
Исключения часто ненавидят, но из трех стилей я все время возвращаюсь к исключениям. Давным-давно я создал приложение с кодами ошибок и вернулся к исключениям, потому что считал, что церемония проверки ошибок того не стоит. Иногда я использую стиль get-last-error, особенно когда ошибка — это то, что пользователь должен устранить. Но для большинства моих приложений (которые обычно не являются библиотеками и представляют собой код под моим контролем) мне нравятся исключения.
У меня всегда есть глобальный обработчик ошибок, который регистрирует и оповещает обо всем, что не было перехвачено. Это позволяет мне кодировать счастливый путь. В большинстве случаев не стоит разбираться, как продолжить обработку при каждой возможной ошибке, поэтому мой подход по умолчанию — провал и выход из строя. Если позже я определяю, что это что-то, что можно обработать для продолжения обработки, то я обновляю этот путь кода, чтобы обработать этот случай.
Большая часть моего кода — это веб-приложения, так что я оттуда и исхожу.
Source: news.ycombinator.com