lesson 3 exceptions and ressource aquisition is init Flashcards

1
Q

Was versteht man unter Fehlerbehandlung in einem Programm?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Welche Schritte umfasst die Fehlerbehandlung?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist Ausnahmebehandlung (Exception Handling) in C++?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie funktioniert die Ausnahmebehandlung in C++?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was sind die Vorteile der Ausnahmebehandlung gegenüber anderen Methoden der Fehlerbehandlung?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was bedeutet Stack Unwinding in der Ausnahmebehandlung?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist RAII (Resource Acquisition Is Initialization)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wie hilft RAII bei der Verwaltung von Ressourcen?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was sind Smart Pointers und wie unterstützen sie RAII?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist der Unterschied zwischen std::unique_ptr und std::shared_ptr?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist ein weak_ptr und wann wird er verwendet?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist die Bedeutung von Destruktoren im Zusammenhang mit RAII?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Warum sollten keine Exceptions in Destruktoren geworfen werden?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly