Ich habe eine Funktion foo
, die eine bar
Ausnahme auslösen kann.Mit `throw;` auf einer modifizierten Ausnahme
In einer anderen Funktion rufe ich foo
, aber ich habe die Möglichkeit, mehr Details zur bar
Ausnahme hinzuzufügen, wenn sie ausgelöst wird. (. Ich möchte lieber nicht solche Informationen als Parameter an foo
passieren, da es nicht wirklich da gehört aufgrund der generischen Art dieser Funktion)
So mache ich das in dem Anrufer:
try {
foo();
} catch (bar& ex){
ex.addSomeMoreInformation(...);
throw;
}
Will throw
die modifizierte Ausnahme erneut werfen oder muss ich throw ex;
verwenden? Letzteres würde vermutlich eine Wertkopie nehmen, also würde ich das lieber nicht machen. Würde throw
einen Wert kopieren? Ich vermute es würde nicht.
(Ich bin mir bewusst, dass ich überprüfen konnte, aber ich bin besorgt über Stolpern auf ein nicht näher spezifiziertes oder undefiniertes Konstrukt, so würde ich gerne wissen).
Bitte fügen Sie eine Erklärung in nicht standardisierter Form hinzu. So verstehe ich die Antwort nicht einmal. Wird die Änderung wirksam oder nicht? – marczellm
@marczellm "keine neue temporäre Ausnahme Objekt erstellt wird" – Theolodis
@anonymous downvoter: bitte erklären Sie Ihren Downvote, es ist verwirrend. –