我尝试用谷歌搜索...
,但正如预期的那样,谷歌忽略了它。
我有这段代码:
try {
// some code
}
catch( ... ) {
// catch logic
}
我猜...
表示任何类型的例外,我是对的吗?
这个的任何其他用法?
答案 0 :(得分:7)
我知道三个用例:
我错过的另一个是预处理:可变参数宏
答案 1 :(得分:2)
是的,你是对的,catch(...)
意味着捕获所有异常。但是,通过const引用捕获异常是一种很好的做法。像
catch(std::exception const & ex)
{
//code here
}
来自MSDN备注部分:
<强>说明: - 强>
try子句之后的代码是受保护的代码段。该 throw表达式抛出(引发)异常。之后的代码块 catch子句是异常处理程序,并捕获(处理) 抛出表达式抛出的异常,如果throw和中的类型 catch表达式是兼容的。有关管理的规则列表 catch块中的类型匹配,请参阅 _ 。如果是catch语句 指定省略号(...)而不是类型,即catch块 处理任何类型的异常,包括C异常和system-或 应用程序生成的异常,例如内存保护,除以 零和浮点违规。因为尝试了阻挡块 程序顺序,这样的处理程序必须是其try的最后一个处理程序 块。 谨慎使用catch(...);通常这样的捕获块是 用于记录错误并在停止之前执行任何特殊清理 程序执行。除非catch块知道如何&gt;处理捕获的特定异常,否则不允许程序继续。
try {
throw CSomeOtherException();
}
catch(...) { // Catch all exceptions – dangerous!!!
// Respond (perhaps only partially) to exception
throw; // Pass exception to some other handler
}
其他任何用法?
我看到的是'printf(const char* x, ...)'