try{}catch(...)一问

jakkye 2005-02-28 01:49:28
我在一段程序中使用了
try
{
//my code
}
catch(...)
{
cout<<"exception!"<<endl;
}

在被try的这段代码中,使用了大量的stl模板类来解决问题,同时也有一些MFC的类.程序在执行时间短时没有问题,长时间运行总会跑到catch里去.仔细检查过代码,没有问题啊.打了很多log,看了一下,每次出现异常的地点都不一样.

想问:
1.stl中是否会抛出无关紧要的异常出来?即这些异常我捕不捕都可以.如果有这种可能性的话,那会是个什么异常呢?
2.catch(...)这种形式下,能否获得捕到的异常的一些信息?
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicknide 2005-02-28
  • 打赏
  • 举报
回复

出现异常,不捕获的话,直接终止程序运行,不管是什么异常,只要发生,就终止(如果开了RTD,则启动调试器)

还有关于我上面说的的不会捕获SEH,最简单的例子:

try{__asm{
xor eax,eax
mov [eax],eax
}}
catch(...)
{
std::cerr<<"Catch none"<<std::endl;
}
nicknide 2005-02-28
  • 打赏
  • 举报
回复
回复人: luopeng(天之翼) ( ) 信誉:100
STL中的异常看看steexcept这个头文件里面的定义就可以了,不过估计你的都是访问地址错什么的造成的哈,catch(...)这种形式也会捕获WINDOWS里的结构化异常的。

------------------------------------------------------------

catch(...)
不会捕获SEH
jakkye 2005-02-28
  • 打赏
  • 举报
回复
明白了兄弟们,多谢多谢了...:)
idau7 2005-02-28
  • 打赏
  • 举报
回复
STL的异常就那几种而已.
jakkye 2005-02-28
  • 打赏
  • 举报
回复
明白,受益匪浅
luopeng 2005-02-28
  • 打赏
  • 举报
回复
STL中的异常看看steexcept这个头文件里面的定义就可以了,不过估计你的都是访问地址错什么的造成的哈,catch(...)这种形式也会捕获WINDOWS里的结构化异常的。
yjh1982 2005-02-28
  • 打赏
  • 举报
回复
catch(std::exception& ec)
{
///如果发生的是stl异常
}
catch(...)
{
}

64,282

社区成员

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

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