我有一个程序在完成之前必须执行某些任务。问题是有时程序会因异常而崩溃(例如无法访问数据库等)。 现在,有什么方法可以检测异常终止并在它终止之前执行一些代码吗?
谢谢。
感谢代码。
最佳答案
<强>1。 Win32
Win32 API 包含一种通过 SetUnhandledExceptionFilter 执行此操作的方法函数,如下:
LONG myFunc(LPEXCEPTION_POINTERS p)
{
printf("Exception!!!\n");
return EXCEPTION_EXECUTE_HANDLER;
}
int main()
{
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)&myFunc);
// generate an exception !
int x = 0;
int y = 1/x;
return 0;
}
<强>2。 POSIX/Linux
我通常通过 signal() 执行此操作函数,然后适本地处理 SIGSEGV 信号。您还可以处理 SIGTERM 信号和 SIGINT,但不能处理 SIGKILL(按设计)。您可以使用 strace()获取回溯以查看是什么导致了信号。
关于c - 检测程序终止(C,Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1394250/