Objectives:
* To survey common error-handling approaches, with attention to their relative merits and drawbacks.
* To obtain a mental model of exception safety, including techniques for reasoning about code in the presence of errors and exceptions.
* To understand and apply the characteristics of the exception-handling mechanisms in the C++ core language, including try-blocks, function-try-blocks, throw-expressions, and exception handlers.
* To describe exception safety in the C++ standard library.
* To promote exception-safe program design and implementation, including best-practice techniques and guidelines for crafting exception-safe, efficient types.