写了一个C的测试程序,目的是捕获进程产生的信号,然后通过信号处理函数处理后,抛出异常,回到catch块中。
但测试结果是,信号处理函数产生的异常对象,不能被catch收住
demo
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
void signal_catchfunc(int signal) {
printf("get singal %d\n", signal);
throw 10;
}
int main()
{
int ret;
signal(SIGSEGV, signal_catchfunc);
try{
// printf("begin\n");
ret = raise(SIGSEGV);
if(ret != 0){
printf("raise error\n");
return -1;
}
}catch(int e){
printf("throw %d\n", e);
}catch(...){
printf(" type .... \n");
}
printf("exit\n");
return 0;
}
执行结果是
get singal 11
terminate called after throwing an instance of 'int'
Aborted (core dumped)
这是为什么?求解