API不能处理异常吗?

慕容飞 2002-05-24 02:48:41
如何用API实现
try{
}
catch(...)
{
}
的功能呢?

处理完异常怎么让它继续往下运行呢?

LONG Exception( EXCEPTION_POINTERS *e)
{
//do somethine when exception
return EXCEPTION_CONTINUE_SEARCH ;
}

SetUnhandledExceptionFilter(Exception)
strcpy((char*)0,"ok");
printf("exit\n");

为什么发生异常就不往下了吗?

...全文
38 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimconrad 2002-05-24
  • 打赏
  • 举报
回复
如果说你重写一个strcpy函数如下:
char* strcpy(void* dest, void* src)
{
char* pResult = NULL;
if(!dest || !src){ // 这是程序自身的检测手段
// 指针为空,无法完成拷贝工作,程序无法继续下去,
// 所以(程序员决定)抛出异常,让catch模块处理善后。
throw TEXT("strcpy: Access Violation\n");
} else {
... // 正常拷贝的代码
}
return pResult;
}
那么就可以工作了。
jimconrad 2002-05-24
  • 打赏
  • 举报
回复
这是程序错误,不算是异常吧!
异常是指程序自身检测到的不满足程序继续运行下去的条件的情况。首先是程序自己知道。如果程序自己不知道那是无能为力的。如下面一段异常抛出代码:
void func()
{
...
m_pPixels = new BYTE[dwWidth*bmHdr.bmHeight];
if( !m_pPixels ) {
// 分配内存返回为空指针,说明没有分配到空间,
// 程序无法继续下去了,只好抛出这个“异常”信息。
throw TEXT("could not allocate data storage\n");
// 抛出后,程序跳转到catch模块去执行。
}
...
}
catch不是什么都可以catch到的,只有throw出来的东西它才能catch到。

16,472

社区成员

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

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

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