C++ 11 - Exception safe guidline from Jon Kalb

less than 1 minute read

  • 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