Должен ли я использовать std::rethrow_Exception вместо того, чтобы напрямую его выбрасывать?C++

Программы на C++. Форум разработчиков
Anonymous
Должен ли я использовать std::rethrow_Exception вместо того, чтобы напрямую его выбрасывать?

Сообщение Anonymous »

В моем коде есть что-то вроде:

Код: Выделить всё

try { do_stuff(); }
catch(my_exception_class& e) {
if (not can_ignore_exception(e)) {
throw(e);
}
log_or_do_nothing(e);
}
Статический анализатор (любезно предоставленный моей IDE) сообщает мне:

Выражение Throw можно заменить выражением rethrow

и, действительно, его можно заменить - вот так:

Код: Выделить всё

try { do_stuff(); }
catch(my_exception_class& e) {
if (not can_ignore_exception(e)) {
std::rethrow_exception(std::current_exception());
}
log_or_do_nothing(e);
}
но стоит ли делать эту замену? Какая польза от использования этой стандартной библиотеки (на самом деле их две) вместо простого повторного создания?

Примечание. Код написан как минимум на C++11 и может использовать или не использовать более поздний стандарт. Если ваш ответ касается нового стандарта C++, укажите какой именно.

Подробнее здесь: https://stackoverflow.com/questions/798 ... hrowing-it

Вернуться в «C++»