linux下动态库的异常无法catch
linux系统,采用c/c++混合编程,用gcc -ldl -lstdc++编译,用try{}catch(...){}无法捕获异常。
有两个情况:
(1):系统函数的异常直接退出
char buf[] = {"99999999"};
try
{int len = atoi(buf);}
catch(...)
{printf("len error\n");return -1}
编译没问题,运行时打印了一个系统错误,直接退出了进程,没有进到catch里,没有printf("len error\n");
????为什么????
(2):调用动态库函数,因为是动态库里函数出现异常了,进程直接退出,也无法捕获。
int res;
try
{res = TilGetConfigID(ptr, size);if (res == -1) return -1;}
catch(...)
{printf("invoke library error\n");return -1;}
该怎么捕获呢?
应该是哪个信号导致的。难道要我捕获所有的信号吗?