首页
社区
课程
招聘
[原创]VS以Debug模式编译程序,printf会抛出异常
发表于: 2013-11-7 10:39 7618

[原创]VS以Debug模式编译程序,printf会抛出异常

2013-11-7 10:39
7618
LONG NTAPI VectoredExpHandLer(struct _EXCEPTION_POINTERS *ExceptionInfo)
{
  printf("[VEH]VectoredExpHandLer\n");
  //::MessageBox(NULL, TEXT("[VEH]VectoredExpHandLer"), TEXT("异常"), MB_OK);
  return EXCEPTION_CONTINUE_SEARCH;
}
int main(int argc,char *argv[]) 
{
  // 向量化异常处理。
  AddVectoredExceptionHandler(1, VectoredExpHandLer);
  printf("按任意键继续...\n");
  getch();
  return 0;
}

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

收藏
免费 5
支持
分享
最新回复 (4)
雪    币: 112
活跃值: (57)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
2
try catch 中包含 printf不会被catch住. (试验环境: vs2005 + winxpsp3)

请问: 用 AddVectoredExceptionHandler 好处是什么?
2013-11-7 17:56
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
try catch是经过编译器封装后的异常处理,这个没有被catch不代表没有产生异常,而可能是在语言内部作为已知异常处理掉了

VEH的好处是相对SEH的,你可以自己去找这方面的内容,而编译器的异常处理则是基于SEH的
2013-11-8 02:17
0
雪    币: 1753
活跃值: (885)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
4
try...catch只能接住SEH的异常
2013-11-9 08:53
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
异常不分SEH还是VEH,只有异常处理函数才区分
2013-11-11 08:53
0
游客
登录 | 注册 方可回帖
返回
//