设置终止和意外处理程序

rim*_*ire 2 c++ exception

你能解释一下吗:

Terminate_handler set_terminate (terminate_handler f) throw();

和这个:

unexpected_handler set_unexpected (unexpected_handler f) throw();

要更改终止处理程序,我们必须使用set_terminate()上面显示的 , 但我无法理解/解释上面的形式。谁能解释一下。

我也很难理解这一点:

Terminate_handler set_terminate (terminate_handler f) throw();

这里,f 是指向新终止处理程序的指针。该函数返回指向旧终止处理程序的指针。新的终止处理程序必须是 Terminate_handler 类型,其定义如下:

typedef void(*terminate_handler)();

Pet*_*ker 5

terminate_handler是函数指针的 typedef。当您设置终止处理程序时,您将传递一个指向要在终止时调用的函数的指针。那\xe2\x80\x99s 的参数set_terminate。该函数返回旧指针。这样,如果您只想在短时间内使用自己的终止处理程序,则可以在完成后恢复前一个处理程序:

\n\n
void my_terminator() {\n    // whatever\n}\n\nint main() {\n    // terminate here calls default handler\n\n    terminate_handler old_handler = set_terminate(my_terminator);\n    // now, terminate will call `my_terminator`\n\n    set_terminate(old_handler);\n    // now, terminate will call the default handler\n\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n