Christophe Verré wrote:catch(MyException e) catches only exception of type MyException. catch(...) catches other exception as well.
One usually catches exceptions by (const) reference. It is very rare and (when seen in production code) often questionable if one wanted to catch an exception by value. It will needlessly trigger the copy constructor of the exception object, and considering that one is trying to handle an exception, one doesn't want other things in the way that could independently raise exceptions of their own.
"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." -- Antoine de Saint-Exupery