首页
社区
课程
招聘
[求助]关于 C++ 异常处理,怎么不能进入到我的异常处理中呢?
发表于: 2009-4-7 07:47 5927

[求助]关于 C++ 异常处理,怎么不能进入到我的异常处理中呢?

2009-4-7 07:47
5927
我用C++ 的异常处理如下:

DWORD WINAPI Ttest(LPVOID l)
{
          try
        {         char *p=NULL;
                strcpy(p,"peboss");
        }
       
        catch (...) {

                ::MessageBox(0,0,0,0);
        }
          return 1;
}

不能进入到我的异常处理中,这是为什么呢?

用_try _catch 是可以的...是不是哪里写错了?

第二个比较菜的问题:

这个catch 后面的 ... 三个点,代表什么意思,多一个少一个都不行!

因为这个点点点我在 多参数接受的函数里面也有看到过,真不知道什么意思!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
一、编辑器对于release版本经常自作聪明,对于过于简单的代码,基本上就是直接把你的异常处理和谐掉了,和不和谐的界限我也找不出来。如果你希望的try…catch可以正常工作,可以在项目属性那里的“C/C++->命令行”里面添加一个/EHa编译参数,这样可以强制把try…catch编译进去。
二、“...”代表匹配不定个数的任何数据类型,在不定参数函数里面就是完全使用了这个功能,在catch里面只是使用了“匹配任何数据类型”的功能。
2009-4-7 09:17
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
C++异常要你自己抛出才会捕获

try
{
      //...
      throw xx;
}
catch(xx &)
{
       //...
}

VC6有扩展
2009-4-7 09:22
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
一般用try…except就可以,不用C++那个try…catch,还有,你的MessagBox很强大~
2009-4-7 09:49
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
感觉__try…__except太弱了,不好用..\\\

/EHa 加上这个就可以了,
2009-4-7 10:03
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
那个不是C++异常,而是 结构化异常
2009-4-7 10:32
0
雪    币: 251
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有多种方法可以测试,就你的代码来说,无非就是测试一下是否拷贝成功.

if 不能测试吗
2009-4-7 10:42
0
雪    币: 111
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
如果strcpy这个函数不抛出异常,而你在try语句块中也不抛出异常,那么就不会有异常被抛出,当然也就捕捉不到了.
2009-4-7 11:55
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你的try 里面 throw一个异常看看
2009-4-8 08:51
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
向空指针strcpt 肯定会有异常的,程序会直接崩溃掉的,可能你没试过吧
2009-4-8 14:48
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感谢几位的热心回复, 确实如 wzanthony 所说.是 release 自作聪明,

加上 /EHA 就可以了,弹出了achillis 认为很强大的 MessageBox,(其实这个BOX 就是我懒得打参数,所以我能用0的时候,都没用 NULL)
2009-4-8 14:51
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
哈哈哈 哈 MessayeBox很强大 哈哈哈!笑死我了
2009-4-8 14:58
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
莫笑莫笑,都只是好玩,,..
2009-4-8 15:00
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
LZ和我以前的一样,我也没弄明白什么原因,现在看了此贴终于明白了,同样感谢楼上的帮忙!
2009-4-8 15:02
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
确实.用 _try 可以捕捉到,但是 try catch 不行.我一直都很纳闷啊

还是 wzanthony 牛啊, 这都能发现,
2009-4-8 15:04
0
游客
登录 | 注册 方可回帖
返回
//