C++ 什么是使用。。。在c++;

C++ 什么是使用。。。在c++;,c++,operators,C++,Operators,我试着用谷歌搜索…,但正如预期的那样,谷歌忽略了它 我有以下代码: try { // some code } catch( ... ) { // catch logic } 我猜,…意味着任何类型的例外,对吗 这个还有其他用途吗是的,您是正确的,catch(…)意味着捕获所有异常。但是,通过const引用捕获异常是一种很好的做法。像 catch(std::exception const & ex) { //code here } 从备注部分: 备注:- try子句后面的代

我试着用谷歌搜索
,但正如预期的那样,谷歌忽略了它

我有以下代码:

try {

// some code
}

catch( ... ) {
// catch logic

}
我猜,
意味着任何类型的例外,对吗

这个还有其他用途吗

是的,您是正确的,
catch(…)
意味着捕获所有异常。但是,通过const引用捕获异常是一种很好的做法。像

catch(std::exception const & ex) 
{ 
//code here
} 
从备注部分:

备注:-

try子句后面的代码是代码的受保护部分。这个 throw表达式抛出(引发)异常。后面的代码块 catch子句是异常处理程序,它捕获(处理)异常 如果抛出表达式中的类型 catch表达式是兼容的。查看管理的规则列表 在catch块中键入匹配,请参见。如果catch语句 指定省略号(…)而不是类型,即catch块 处理任何类型的异常,包括C异常和系统或 应用程序生成的异常,如内存保护,除以 零和浮点冲突。因为挡块是试过的 程序顺序,这样的处理程序必须是其try的最后一个处理程序 街区谨慎使用catch(…);通常情况下,这样的捕捉块是 用于记录错误并在停止之前执行任何特殊清理 程序执行。除非catch块知道如何>处理捕获的特定异常,否则不允许程序继续。

这个还有其他用途吗


我看到的一个是在变量数量中的用法,如
'printf(const char*x,…)
我知道三种使用情况:

  • 可变数量的参数,如“printf(const char*fmt,…”)
  • 把任何东西都称为“catch(…)”
  • 变量模板,如“template”和解包“T…”(c++11)

还有一个,我错过了,是预处理:变量宏

是的,你是对的。@old程序员,还有其他用法吗?是的。你说得对。在函数原型的上下文中还有另一种用法,这意味着调用方可以传递任意多的参数。例如
void格式(char*formatString,…)但不要错,这一个被认为是C的继承而不是正确的C++。MSVC++使用这个语法来捕获操作系统异常,它们被称为SEH(结构化异常处理)。顺便说一句,这种用法很有争议。
try {
   throw CSomeOtherException();
}
catch(...) {  // Catch all exceptions – dangerous!!!
   // Respond (perhaps only partially) to exception
   throw;       // Pass exception to some other handler
}