Blöcke in C abfangen: Wert vs. Referenz
In C kann zwischen dem Abfangen von Ausnahmen nach Wert oder Referenz gewählt werden . Diese Entscheidung kann sich auf das Verhalten und die Korrektheit des Codes auswirken.
Standardpraxis
Die Standardpraxis für Ausnahmen in C besteht darin, Ausnahmen nach Wert auszulösen und nach Referenz zu fangen.
Begründung
Das Fangen nach Wert kann bei Vorliegen einer Vererbung problematisch sein Hierarchien. Betrachten Sie das folgende Beispiel:
class CustomException { public: int errorCode; }; class MyException : public CustomException { public: MyException() { errorCode = 5; } };
Wenn eine MyException ausgelöst und nach Wert abgefangen wird, wird sie in eine CustomException-Instanz konvertiert, was dazu führt, dass der Fehlercode auf 0 gesetzt wird. Dies kann zu unerwartetem Verhalten führen.
Abfangen per Referenz
Durch das Abfangen von Ausnahmen per Referenz wird die ursprünglich ausgelöste Ausnahme beibehalten, was einen genauen Zugriff ermöglicht zu den Eigenschaften der Ausnahme. Im obigen Beispiel stellt das Abfangen von MyException &e sicher, dass der Fehlercode auf 5 gesetzt bleibt.
Wann nach Wert abgefangen werden sollte
Es gibt seltene Situationen, in denen das Abfangen nach Wert möglich ist vorzuziehen sein, beispielsweise wenn:
Empfehlung
Im Allgemeinen ist es stark Es wird empfohlen, die Standardpraxis des Werfens nach Wert und des Fangens nach Referenz zu befolgen, um die korrekte Behandlung von Ausnahmen sicherzustellen, insbesondere im Zusammenhang mit der Vererbung.
Das obige ist der detaillierte Inhalt vonIn C nach Wert oder Referenz fangen: Wann ist das eine besser als das andere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!