Sollte ich std::rethrow_Exception verwenden, anstatt es direkt erneut auszulösen?C++

Programme in C++. Entwicklerforum
Anonymous
 Sollte ich std::rethrow_Exception verwenden, anstatt es direkt erneut auszulösen?

Post by Anonymous »

In meinem Code habe ich so etwas wie:

Code: Select all

try { do_stuff(); }
catch(my_exception_class& e) {
if (not can_ignore_exception(e)) {
throw(e);
}
log_or_do_nothing(e);
}
Ein statischer Analysator (mit freundlicher Genehmigung meiner IDE) sagt mir:

Throw-Ausdruck kann durch einen Rethrow-Ausdruck ersetzt werden

und tatsächlich kann ersetzt werden – etwa so:

Code: Select all

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);
}
aber soll ich diesen Ersatz vornehmen? Welchen Vorteil hat die Verwendung dieser Standardbibliotheksfunktion – eigentlich zwei davon – statt nur direkt erneut zu starten?

Hinweis: Der Code ist mindestens C++11 und verwendet möglicherweise einen späteren Standard, muss aber nicht. Wenn sich Ihre Antwort speziell auf einen neueren C++-Standard bezieht, geben Sie bitte an, welcher.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post