throw-expression: throw assignment-expressionopt
Вычисление throw-expressionс операндом throws an exception; Тип объекта исключения определяется удалением любого верхнего уровня cv-qualifiers из статического типа операнда и изменением типа с «массив T» или типа функции T на «указатель на T».
A throw-expression без операнда повторно генерирует currently handled exception. Исключение повторно активируется существующим объектом исключения; новый объект исключения не создается. Исключение больше не считается обнаруженным. [ Example: Код, который должен быть выполнен из-за исключения, но не может полностью обработать само исключение, можно записать следующим образом:
try { // ... } catch (...) { // catch all exceptions // respond (partially) to exception throw; // pass the exception to some other handler }
— end example ]
Если в настоящее время не обрабатывается никаких исключений, выполняется оценка throw-expression без вызовов операндов std::terminate().