Должен ли я использовать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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