Асинхронные функции часто не используют исключения.
Даже при синхронных вызовах Asio и Boost-Beast имеют перегрузки, которые принимают выходной аргумент типа system_error&
вместо того, чтобы бросать.
Асинхронные операции не могут генерировать исключения, потому что операция не завершается в кадре стека вызывающего кода¹.
Есть ли техническая причина, почему они не заявлены noexcept
?
Помимо возможных преимуществ в производительности, я также думаю, что это было бы полезно как подсказка для пользователя, потому что пользователь знает, что ему не нужна обработка исключений.
¹ технически они могут генерировать исключения, например, при проверке предварительных условий или неверных аргументов
Задача ещё не решена.
Других решений пока нет …