Повторный бросок в C++
Повторный бросок - это throw;
без выражения внутри активного блока
catch.
Такой оператор заново поднимает то же
исключение, что уже перехвачено.
Удобно добавить локальную очистку и
отдать ошибку вызывающему коду.
Соберем двухуровневый перехват с выводом
сообщения во внешнем main:
#include <iostream>
#include <stdexcept>
#include <string>
void relay() {
try {
throw std::runtime_error("relay fault");
} catch (...) {
throw;
}
}
int main() {
try {
relay();
} catch (const std::exception& err) {
std::cout << err.what() << "\n";
}
return 0;
}
Объявите void step(), бросающую
std::runtime_error с текстом "step",
перехватывающую ее и снова бросающую через
throw;. В main выведите
what.