Template based exceptions - these are simple and practical and avoid the proliferation of exception types. Although not syntatactically ideal, it is convenient and eminently practical.
https://anaconda.org/robostack-staging/ros-noetic-ecl-exceptions/badges/latest_release_relative_date.svg