如何捕获空指针引发的异常?
class A{
public:
void get_type(){ cout<<"called:"<<m<<endl;};
private:
int m;
};
int main(){
try{
A* _pObj=NULL;
_pObj->get_type ();
}catch(...)
{
cout<<"exception"<<endl;
}
return 0;
}
这段代码经g++编译运行之后出现Segmentation fault,不能打印出任何信息,请问使用NULL指针不会引发异常吗,为何我的异常捕获机制无法连接到该异常呢?
问题点数:100、回复次数:7Top
1 楼howyougen(夫孝,德之本也,教之所由生也)回复于 2006-03-18 19:15:31 得分 0
markTop
2 楼p_zyh(p_zyh)回复于 2006-03-18 19:35:51 得分 50
指针越界会产生一个SIGSEGV的信号
该信号的缺省处理操作是中止程序
这里catch是没有机会捕获异常的Top
3 楼doway(john)回复于 2006-03-18 19:37:47 得分 10
#include <iostream>
using namespace std;
前边加上这两句,Windows 下测试,编译运行都很好,没有问题。
难道是 g++ 很菜吗?:)
Top
4 楼skywoody()回复于 2006-03-18 19:44:23 得分 20
在VS2003下用(...)可以捕捉到啊
不过我用exception的指针和引用都没有捕捉到
可以肯定它不是一个C++库的异常了Top
5 楼skywoody()回复于 2006-03-18 19:54:15 得分 10
是个win32系统级的异常
0xc0000005 access violationTop
6 楼p_zyh(p_zyh)回复于 2006-03-18 20:05:20 得分 10
都说了g++,那就应该是在linux下吧
这个是系统实现策略的不同
跟g++菜不菜没关系的Top
7 楼MagicCarmack(MagiC++)回复于 2006-03-18 23:04:55 得分 0
G++菜?
才听说Top




