Heute Erneutes Auslösen fand ich einen Fehler in einem catch
Block:Losing Art Ausnahme, wenn eine Ausnahme von einem catch-Block
catch (const exception& e){
// do something
// throw e; <-- bug!
throw; // <-- right thing to do
}
Grundsätzlich, wenn ich die Ausnahme e
ausdrücklich erneut auslösen, bekomme ich ein neues std::exception
rekonstruiert, in Tatsache die Nachricht von der what()
Methode war die Standardeinstellung std::string
, anstelle von meiner benutzerdefinierten Nachricht.
Was ist die Erklärung? Ich dachte, dass throw;
nur eine Kurzschrift von throw ExceptionJustCaught;
ist.
Es ist der Unterschied zwischen einem Wert und einer Referenz. –
Dies ist ein sehr wichtiges Konzept, das oft übersehen wird (und meiner Meinung nach eine knifflige Syntax, die zumindest eine Warnung sein sollte, wenn sie kompiliert wird ..). Gute Frage! – NHDaly