catch(...)和catch(CException*)之间有什么区别?

Bha*_*a K 4 c++ exception-handling visual-c++

CException 是VC++抛出的所有异常的基本类型,因此它应该捕获所有异常,对吧?

Jon*_*Jon 13

CException不是所有的扩展的基本类型(它可能是MFC代码使用的所有异常的基本类型,但这是尽可能去).

在C++中,你可以抛出任何东西 ; 它不必是一个"异常"子类,它甚至不必是一个对象.这是完全合法的例如写throw 42;throw new std::vector<string>();

差别是显而易见的:catch(CException)将只捕获抛出的实例CException及其子类,而另一个将捕获任何东西.