C++ catch blocks – catch exception by value or reference? [duplicate]

The standard practice for exceptions in C++ is …

Throw by value, catch by reference

Catching by value is problematic in the face of inheritance hierarchies. Suppose for your example that there is another type MyException which inherits from CustomException and overrides items like an error code. If a MyException type was thrown your catch block would cause it to be converted to a CustomException instance which would cause the error code to change.

Leave a Comment