C++ 设置终止和意外处理程序
你能解释一下吗: terminate_handler set_terminate(terminate_handler f)throw() 这是: 意外的\u处理程序集\u意外(意外的\u处理程序f)throw() 要更改终止处理程序,我们必须使用上面显示的C++ 设置终止和意外处理程序,c++,exception-handling,C++,Exception Handling,你能解释一下吗: terminate_handler set_terminate(terminate_handler f)throw() 这是: 意外的\u处理程序集\u意外(意外的\u处理程序f)throw() 要更改终止处理程序,我们必须使用上面显示的set_terminate(),但我无法理解/解释上面的表单。谁能解释一下吗 我也很难理解这一点: terminate_handler set_terminate(terminate_handler f)throw() 这里,, f是指向新终止
set_terminate()
,但我无法理解/解释上面的表单。谁能解释一下吗
我也很难理解这一点:
terminate_handler set_terminate(terminate_handler f)throw()
这里,,
f是指向新终止处理程序的指针
返回指向旧终止处理程序的指针。新协议终止
处理程序必须是terminate\u handler类型,其定义如下:
typedef void(*终止处理程序)()
terminate\u handler
是函数指针的类型定义。设置终止处理程序时,传递一个指向要在终止时调用的函数的指针。这是set\u terminate
的参数。函数返回旧指针。这样,如果您只想在短时间内使用自己的终止处理程序,则可以在完成后恢复上一个处理程序:
void my_terminator() {
// whatever
}
int main() {
// terminate here calls default handler
terminate_handler old_handler = set_terminate(my_terminator);
// now, terminate will call `my_terminator`
set_terminate(old_handler);
// now, terminate will call the default handler
return 0;
}
terminate\u handler
是函数指针的类型定义。设置终止处理程序时,传递一个指向要在终止时调用的函数的指针。这是set\u terminate
的参数。函数返回旧指针。这样,如果您只想在短时间内使用自己的终止处理程序,则可以在完成后恢复上一个处理程序:
void my_terminator() {
// whatever
}
int main() {
// terminate here calls default handler
terminate_handler old_handler = set_terminate(my_terminator);
// now, terminate will call `my_terminator`
set_terminate(old_handler);
// now, terminate will call the default handler
return 0;
}
解释得很好,谢谢!我有一个困惑q1:为什么有'throw()'关键字,是动态异常规范吗?
throw()
,因为括号是空的,所以说函数不抛出任何异常。如今,它将被写成noexcept
@Pete Becker最后一个问题是terminate\u handler set\u terminate(terminate\u handler f)throw()代码>原型,用于设置\u终止
function@rimiro-是的,这是一个功能原型。就像intmy_函数(inti)throw()代码>。只需将int
替换为terminate\u处理程序
。同样,terminate\u handler
是函数指针的typedef名称。也就是说,它是一个类型的名称,很像int
。解释得很好,谢谢!我有一个困惑q1:为什么有'throw()'关键字,是动态异常规范吗?throw()
,因为括号是空的,所以说函数不抛出任何异常。如今,它将被写成noexcept
@Pete Becker最后一个问题是terminate\u handler set\u terminate(terminate\u handler f)throw()代码>原型,用于设置\u终止
function@rimiro-是的,这是一个功能原型。就像intmy_函数(inti)throw()代码>。只需将int
替换为terminate\u处理程序
。同样,terminate\u handler
是函数指针的typedef名称。也就是说,它是一个类型的名称,很像int
。