- Error tracing (logging)
- Stack unwinding (raset/termination)
- Data passing / Control Flow (when necessary)
- As rarely as possible
- Serious/infrequent/unexpected errors
- With as few exception types as possible (as determined by catch functionality)
- Using return codes
- Using exceptions
- Bad resource management
- RAII resource management
- Adding context with cout
- Adding context with repackage
- Adding context with mutable what()
- Checking with exceptions
- Checking with return enum
- Retrying with exceptions
- Retrying without exceptions
- Search faulire with exceptions
- Search failure with Optional monadics
- Exception data passing
- Expected data passing
- Expected templated data passing
- Exceptional control flow, same operation
- Expected control flow, generic lambda
- Exceptional control flow, different operations
- Expected control flow, different operations
- OmegaException class