This excerpt is from Bjarne's book :
In principle, an exception is copied when it is thrown, so the handler gets hold of a copy of the original exception. In fact, an exception may be copied several times before it is caught. Consequently, we cannot throw an exception that cannot be copied.
If we catch an exception by reference or pointer then this doesn't hold true. Am I right? Does author here means that thrown object is first copied internally and that copy is passed to the handler argument, where that will again be copied if the handler argument is pass by value