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