C++ catch blocks - catch exception by value or reference?

c++, exception

Solution

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.

Problem

Possible Duplicate: catch exception by pointer in C++ I always catch exceptions by value. e.g ``` try{ ... } catch(CustomException e){ ... } ``` But I came across some code that instead had `catch(CustomException &e)` instead. Is this a)fine b)wrong c)a grey area?

Original source

Related problems