lesson 3 exceptions and ressource aquisition is init Flashcards
Was versteht man unter Fehlerbehandlung in einem Programm?
Fehlerbehandlung bezeichnet den Umgang mit Fehlern, die während der Ausführung eines Programms auftreten. Ziel der Fehlerbehandlung ist es, sicherzustellen, dass das Programm in einem konsistenten Zustand bleibt und nicht abstürzt, selbst wenn Fehler auftreten.
Welche Schritte umfasst die Fehlerbehandlung?
Die Fehlerbehandlung umfasst drei Hauptschritte:
1. Erkennen von Fehlern.
2. Weitermelden des Fehlers an eine übergeordnete Instanz.
3. Beheben des Fehlers, z. B. durch Freigeben nicht mehr benötigter Ressourcen.
Was ist Ausnahmebehandlung (Exception Handling) in C++?
Die Ausnahmebehandlung ist ein Mechanismus zur Fehlerbehandlung, bei dem der normale Programmfluss durch das Werfen einer Exception unterbrochen wird. Diese wird von einem Catch-Block abgefangen und behandelt.
Wie funktioniert die Ausnahmebehandlung in C++?
Ein try
-Block enthält den normalen Code. Tritt ein Fehler auf, wird eine Exception geworfen (throw
). Diese wird von einem Catch-Block abgefangen und dort behandelt. Danach wird das Programm normal fortgesetzt.
Was sind die Vorteile der Ausnahmebehandlung gegenüber anderen Methoden der Fehlerbehandlung?
Die Ausnahmebehandlung trennt die Fehlerbehandlung vom normalen Programmcode, was die Lesbarkeit und Wartbarkeit des Codes verbessert. Sie vermeidet verschachtelte Fehlerprüfungen und ermöglicht das automatische Aufräumen von Ressourcen.
Was bedeutet Stack Unwinding in der Ausnahmebehandlung?
Stack Unwinding tritt auf, wenn eine Exception geworfen wird und der aktuelle Funktionsaufruf den Fehler nicht behandeln kann. Der Stackframe der Funktion wird abgebaut, und die Destruktoren der Objekte im Stack werden aufgerufen.
Was ist RAII (Resource Acquisition Is Initialization)?
RAII ist ein Konzept, bei dem die Lebensdauer einer Ressource an die Lebensdauer eines Objekts gebunden ist. Ressourcen werden im Konstruktor angefordert und im Destruktor freigegeben. Dies sorgt dafür, dass Ressourcen auch im Fehlerfall automatisch freigegeben werden.
Wie hilft RAII bei der Verwaltung von Ressourcen?
RAII stellt sicher, dass Ressourcen automatisch freigegeben werden, wenn ein Objekt den Gültigkeitsbereich verlässt. Dies geschieht durch den Destruktor des Objekts, der beim Verlassen des Gültigkeitsbereichs aufgerufen wird.
Was sind Smart Pointers und wie unterstützen sie RAII?
Smart Pointers sind Klassen, die Speicherverwaltung mit RAII kombinieren. Sie übernehmen die Verwaltung von dynamisch alloziertem Speicher und stellen sicher, dass der Speicher freigegeben wird, wenn der Smart Pointer den Gültigkeitsbereich verlässt.
Was ist der Unterschied zwischen std::unique_ptr
und std::shared_ptr
?
std::unique_ptr
besitzt eine exklusive Ressource, die nicht kopiert werden kann. std::shared_ptr
verwendet Referenzzählung, um eine Ressource zu teilen und wird erst freigegeben, wenn keine Instanzen mehr auf sie zeigen.
Was ist ein weak_ptr
und wann wird er verwendet?
Ein weak_ptr
vermeidet zyklische Referenzen, die bei shared_ptr
auftreten können. Er erhöht nicht den Referenzzähler und kann auf ein Objekt zeigen, das von einem shared_ptr
verwaltet wird.
Was ist die Bedeutung von Destruktoren im Zusammenhang mit RAII?
Destruktoren stellen sicher, dass Ressourcen freigegeben werden, wenn ein Objekt den Gültigkeitsbereich verlässt. Dies verhindert Speicherlecks, indem Ressourcen auch bei Fehlern oder frühzeitigen Rückgaben freigegeben werden.
Warum sollten keine Exceptions in Destruktoren geworfen werden?
Exceptions in Destruktoren können zu unvorhersehbarem Verhalten führen, besonders während des Stack Unwindings. Es kann zu einem abrupten Programmabbruch führen, da mehrere aktive Exceptions schwer zu handhaben sind.