Исключения в C++ предпочтительнее кодов возврата при обнаружении ошибок по нескольким причинам:
- Возможность объединять разные источники ошибок в одну сущность. www.cyberforum.ru Например, с помощью исключений можно отличить нехватку памяти от деления на ноль или обрыва соединения на выходе из одной функции. www.cyberforum.ru
- Безопасность и удобство. pro-prof.com За счёт спецификации исключений компилятор гарантирует, что обработку ошибки не пропустят. pro-prof.com Кроме того, ошибки сами доставляются до подходящего обработчика. pro-prof.com
- Возможность чётко разделить код, который обнаруживает ошибку, и код, обрабатывающий ошибку. learn.microsoft.com Это упрощает чтение и запись кода. stackoverflow.com
- Автоматическое перемещение ошибки на следующий уровень. stackoverflow.com Если ошибка не может быть устранена на одном уровне, она автоматически переходит на следующий уровень. stackoverflow.com
Однако исключения не всегда предпочтительнее кодов возврата. habr.com Их используют, когда ошибки возникают редко или проявляются очень жёстко. habr.com Если же ошибки случаются часто и их источник заранее известен, то лучше применять коды возврата. www.cyberforum.ru