c++ 下标越界的异常处理

majie980 2011-06-24 11:15:13
vector<CString> paths;
CString str1=_T("1234");
CString str2=_T("2345");
paths.push_back(str1);
paths.push_back(str2);
CString str;
try
{
str=paths.at(0);
str=paths.at(1);
str=paths.at(2);
}
catch (CMemoryException* e)
{
AfxMessageBox(_T("an memeory error "));
}
catch (CFileException* e)
{
AfxMessageBox(_T("an fileexception error "));
}
catch (CException* e)
{
AfxMessageBox(_T("an error "));
}
AfxMessageBox(_T("Hello word"));


运行这段代码,程序崩溃了,我希望得到的结果是:当程序遇到下标越界时,爆出异常,返回false,但程序不能崩溃。
...全文
610 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 majie980 的回复:]

那么如果不是vector 普通数组可以捕获类似的异常吗?
[/Quote]
不能
majie980 2011-06-27
  • 打赏
  • 举报
回复
那么如果不是vector 普通数组可以捕获类似的异常吗?
  • 打赏
  • 举报
回复
vector at抛出的异常是 out_of_range

catch( out_of_range e )
killer2008_520 2011-06-24
  • 打赏
  • 举报
回复
C++中并非所有的问题都是异常。那些不是异常的,当然就不在try/catch机制的管辖范围之内。
nightkids_008 2011-06-24
  • 打赏
  • 举报
回复
越界了。。我觉得你要捕捉这个异常就得在VECTOR源代码里面加异常捕捉,而不是在这里。因为.at是它的成员函数 你越界的时候 在容器里面已经报出段错误了。
downmooner 2011-06-24
  • 打赏
  • 举报
回复
那你在AfxMessageBox 后面加个retuan false

64,631

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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