这个异常怎么捕获

gpbupt 2001-03-08 02:46:00
请问下面这段代码中的异常怎么捕获到?

char msg[10];
for(int i=0;i<100;i++)
{
msg[i]=0;
}


另外,请问程序运行当中显示的"xxx内存不能被read,write”这种异常
由该怎么捕获呢?
好像用
TYR....CATCH(CException,e)....END_CATCH
try.....catch(...)
都不行

最后,请问try....catch...
和 _try...except....
以及
TRY.....CATCH....END_CATCH
有什么区别吗?

各位大侠救救我这个可怜的人吧!!!



...全文
110 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
isdom 2001-03-08
  • 打赏
  • 举报
回复
其实 "xxx内存不能被read,write”这种异常

try {} catch (...) {} 就能捕获
eg.
try {
*(DWORD*)(0) = 1;
}
catch (...) <==== 注意是 "..."
{
cout << "catch it" <<endl;
}
In355Hz 2001-03-08
  • 打赏
  • 举报
回复
试试这个宏:
TRY{
...
}
CATCH_ALL(e)
{
...
DELETE_EXCEPTION(e);
}
END_CATCH_ALL
可以捕获所有异常。
panda_w 2001-03-08
  • 打赏
  • 举报
回复
不能捕获?
char msg[10];
for(int i=0;i<100;i++)
{
_try{
msg[i]=0;
}
_except(EXCEPTION_EXECUTE_HANDLER)//告诉系统认识这个异常,并编写了代码来处理之
{//你的异常处理语句
//如:msg[i]='';
}
}
Luck04 2001-03-08
  • 打赏
  • 举报
回复
不能捕获?
char msg[10];
for(int i=0;i<100;i++)
{
_try{
msg[i]=0;
}
_except(EXCEPTION_EXECUTE_HANDLER)//告诉系统认识这个异常,并编写了代码来处理之
{//你的异常处理语句
//如:msg[i]='';
}
}


dragonfly 2001-03-08
  • 打赏
  • 举报
回复
try....catch 是C++的异常捕获机制。
_try...except没有。
只有_try..._except,他是win32的异常捕获机制。

TYR....CATCH(CException,e)....END_CATCH
是微软在vc中定义的宏,具体你自己看一下她怎么定义的就明白了!

现在来解决你的问题:
你的程序里面如果msg后面的连续的90个字节已经保留,即访问他不会出现访问违例的异常的话,
上面的这些异常捕获手段都不能保证帮助你捕获到他们。除非,你不用C/C++改用Java.
但是,如果你的msg后面的90个字节内有没有被保留的话,你可以用win32的异常捕获他。

你说的读写权限的的违例捕获,只需要在win32异常捕获的_except*()括号里面添上对应得知就可以了,具体的值我想不起来了,你查一下msdn就可以了!
kz 2001-03-08
  • 打赏
  • 举报
回复
区别看MSDN
try..catch(CException* e){}试试

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧