大家来谈谈怎样定义全局的异常?

康斯坦汀 2003-05-29 03:40:53
在VC中能不能定义一个全局的异常?即任何没有捕捉到的异常最终的处理,
避免出个xxx内存写错误之类的对话框,然后被强行关闭程序?
...全文
35 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhwu3721 2003-06-03
  • 打赏
  • 举报
回复
up,
給點分給我吧,好嗎?
康斯坦汀 2003-06-03
  • 打赏
  • 举报
回复
给我留言,我给你。
Ozzman 2003-06-03
  • 打赏
  • 举报
回复
up
程序的色彩 2003-06-03
  • 打赏
  • 举报
回复
我也要!
masterz 2003-06-02
  • 打赏
  • 举报
回复
Installs your own termination function to be called by unexpected.

unexpected_function set_unexpected(
unexpected_function unexp_func
);
Establishes a new unexpected_handler to be when an unexpected exception is encountered.

unexpected_handler
set_unexpected(
unexpected_handler _Pnew
) throw( );
suxk 2003-06-02
  • 打赏
  • 举报
回复
我快没分了怎么办?
康斯坦汀 2003-05-29
  • 打赏
  • 举报
回复
又有新发现,这样虽然解决了此问题,但是还不完美,
我发现如果有另一个可捕捉的异常发生,这个全局异常就失灵了。
有没有更好的方案?
待我继续研究。
康斯坦汀 2003-05-29
  • 打赏
  • 举报
回复
啊,原来这么简单,成了,只要把CWinapp::Run()包起来就行:

先重载Run函数:

class CmyApp : public CWinApp
{
public:
CmyApp();

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CmyApp)
public:
virtual BOOL InitInstance();
virtual int Run();


再这样包起来:

int CmyApp::Run()
{
int i=0;
try{
i=CWinApp::Run();
}
catch(...)
{
AfxMessageBox("程序出现了未知的错误!");
}
return i;
}

这样就行了,不过好象debug版不行,必须release版。

散分!分少的报名.
康斯坦汀 2003-05-29
  • 打赏
  • 举报
回复
怎么包,我当然不是指控制台程序,也不是api, MFC已经把winmain包起来了,
我们怎么包?
我也知道这个道理,问题是包哪里?
我的想法是包CWinapp::Run(), 不知对不对?
zxyin1 2003-05-29
  • 打赏
  • 举报
回复
gz
masterz 2003-05-29
  • 打赏
  • 举报
回复
www.codeproject.com/cpp/exception.asp

把你的main/winmain 用try/catch 包起来
康斯坦汀 2003-05-29
  • 打赏
  • 举报
回复
记得好像Borland的VCL有这样的机制,Delphi或C++Buidler应该都支持。

我们写的程序不可能每处都去用try{}catch{}去捕捉异常,
难免会有一些程序的bug,在特定的情况下发作,这时如果我们没有捕捉到,
程序就会出个内存写错误之类的对话框,然后被强行关闭了。

我的想法是,有没有在整个程序高度,捕捉所有异常的方法,这样无论出什么
问题,决定权首先在我们手里。



醉马不肖 2003-05-29
  • 打赏
  • 举报
回复
up
康斯坦汀 2003-05-29
  • 打赏
  • 举报
回复
我想应该定义在CWinapp中,有没有例子?

16,471

社区成员

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

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

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