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
}