朋友们请进..关于try{} catch的问题,在线等;;;;;;;;
char buf[3];
try{
for(int i=0;i <100;i++) buf[i]=25;//在这里造成一个越界的错误
}
catch(...)
{
ShowMessage( "fds ");//它总不执行
}
为什么catch里面的语句总不执行呢?每次运行系统都会报错,说什么访问了不可读的内存,为什么我的程序不能报错呢?
[解决办法]
C/C++不检查数组越界,不在异常范围内
[解决办法]
就你那个而言
class overflow
{
};
char buf[3];
try{
for(int i=0;i <100;i++)
{
if(i > = 3) throw voerflow();//程序会停在此处抛出异常,等待处理
buf[i]=25;
}
}
catch(overflow)
{
ShowMessage( "fds ");//它总不执行
}
[解决办法]
LZ这个似乎捕捉不到,只能人为处理,如果说为什么不检测数组越界的话,研究一下BITMAPINFO这个结构体,就知道不检测越界的好处了。