Пожалуйста, посмотрите мой подробный ответ на подобный вопрос здесь .
Затраты на обработку исключений зависят от платформы и зависят от ОС, компилятора и архитектуры ЦП, на которой вы работаете.
Для Visual Studio, Windows и x86 существует плата, даже если исключения не создаются.Компилятор генерирует дополнительный код для отслеживания текущей «области видимости», которая впоследствии используется для определения того, какие деструкторы следует вызывать и где начинать поиск фильтров и обработчиков исключений.Изменения в области действия инициируются try
блоками и созданием объектов с деструкторами.
Для Visual Studio, Windows и x86-64 стоимость практически равна нулю, когда исключения не выбрасываются.ABI x86-64 имеет гораздо более строгий протокол обработки исключений, чем x86, и операционная система выполняет тяжелую работу, поэтому самой программе не нужно отслеживать столько информации для обработки исключений.
Когда возникают исключения, стоимость значительна, поэтому они должны происходить только в действительно исключительных случаях.Обработка исключений в x86-64 обходится дороже, чем в x86, потому что архитектура оптимизирована для более распространенного случая исключений.