C++ 11 - Exception safe guidline from Jon Kalb
- Throw by value. Catch by reference
- No dynamic exception specifications. Use noexcept.
- Destructors that throw are evil.
- Use RAII. (Every responsibility is an object. One per.)
- All cleanup code called from a destructor
- Support swapperator (With No-Throw Guarantee)
- Draw “Critical Lines” for the Strong Guarantee
- Know where to catch (Switch/Strategy/Some Success)
- Prefer exceptions to error codes.
Where we should use "try, catch"
• Anywhere that we support the No-Throw Guarantee
• Destructors & Cleanup
• Swapperator & Moves
• C-API
• OS Callbacks
• UI Reporting
• Converting to other exception types
• Threads
And extra places
•Switch
•Strategy
•Some Success