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