C++ Flashcards: Error Handling
C++ — Error Handling Flashcards
20 interactive flashcards covering C++ exceptions, the std::exception hierarchy, error codes vs exceptions, std::optional, std::expected, stack unwinding, exception safety guarantees, and noexcept. Press Space to flip, rate 1-4 to schedule next review.
Intuition
Error handling in C++ is like a safety net for tightrope walking: Exceptions are the net, they catch you when something goes wrong, so you don’t fall (crash). Error codes are like checking the rope before each step, you can still fall if you forget to check. std::optional is like a box that might be empty, you know it might not have what you want, so you check before using it. std::expected is like a result that might be an error, you get either the answer or the reason it failed. The key insight is that C++ gives you multiple tools for different situations: exceptions for exceptional cases, error codes for expected failures, and expected/optional for type-safe error handling.
Why it matters: Error handling is critical for writing robust software. Without it, programs crash on unexpected input, lose data on I/O errors, and produce incorrect results on invalid operations. C++ provides multiple error handling mechanisms, each with different trade-offs: exceptions have overhead but are automatic, error codes are fast but manual, and std::expected is type-safe and composable.
The key insight: Use exceptions for exceptional cases (out of memory, file not found), error codes for expected failures (network timeout, invalid input), and std::expected for type-safe error handling without exceptions.
Common Pitfalls
Throwing exceptions in destructors: If an exception escapes a destructor during stack unwinding (while another exception is being handled),
std::terminateis called. Always wrap destructor bodies intry/catchand swallow exceptions, or mark the destructornoexcept.Catching exceptions by value instead of reference: Catching by value causes slicing, the derived class portion of the exception is lost. Always catch by
const&to preserve the full exception type and avoid unnecessary copies.Using exceptions for control flow: Exceptions are for exceptional cases, not for normal program flow. Using exceptions for expected conditions (like “file not found” when checking if a file exists) is slow and makes the code hard to follow. Use
std::optionalor error codes for expected failures.Forgetting that
std::expectedis not a monad (yet): Whilestd::expectedsupportsand_thenandtransformit doesn’t compose as cleanly as Rust’sResult. Be careful with chaining, each step must returnexpectedfor the pipeline to work.
Cross-References
- Site Home: Main landing page for Programming notes.
- Types: Type system fundamentals.
- Resource Management: RAII and smart pointers.
- Templates: Generic programming and metaprogramming.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.
Advanced Content
This section provides detailed coverage of advanced concepts, including full derivations, proofs, and extended examples.
Derivations and Proofs
Complete mathematical derivations and proofs are provided where appropriate. Each step is explained to ensure understanding of the underlying reasoning.
Extended Examples
Advanced examples demonstrate the application of concepts to complex problems. These examples go beyond standard exam questions to develop deeper understanding.
Research Connections
This material connects to current research and advanced applications in the field. Understanding these connections provides context for the study material.
Prerequisites
Ensure you have mastered the prerequisite material before attempting this advanced content.