高手帮忙解答一下

J_John 2003-04-26 01:24:29
C++的全局对象初始化是在main函数之前的.

现在是这样的问题,我有一个全局对象,而且,这个全局对象的构造函数有可能会函数异常.

在这种情况,有什么方法可以捕捉到此异常.比如:

class CInit
{
public:
CInit();
};

CInit::CInit(){throw 1;}

CInit Init; //弹出异常

int main(void)
{
}
...全文
40 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
J_John 2003-05-30
  • 打赏
  • 举报
回复
谢谢,是可以解决问题,条件是InstallHandler的对像实例化必须要在其它对象初始化之前,这个可以控制!
lwzlemon 2003-05-05
  • 打赏
  • 举报
回复
up
mfs 2003-05-04
  • 打赏
  • 举报
回复
up
shishiXP 2003-05-04
  • 打赏
  • 举报
回复
关注
Goooder 2003-05-04
  • 打赏
  • 举报
回复
作个handle函数.

void ErrorHandler(void)
{
...
}

class InstallHandler
{
InstallHandler(void){std::set_terminate(ErrorHandler);};
} Installer;

让Installer在第一时间被构造,安装handler.
J_John 2003-05-02
  • 打赏
  • 举报
回复
继续啊
whoke 2003-04-28
  • 打赏
  • 举报
回复
考虑中
Chrisma 2003-04-27
  • 打赏
  • 举报
回复
有啊,但不想告诉你, 要编写一个myhandler代替某个非常重要的handler
cloudtarget 2003-04-27
  • 打赏
  • 举报
回复
有趣
J_John 2003-04-27
  • 打赏
  • 举报
回复
哈哈,大侠,谢了.多少我知道你说有了.

我去看看有没有参考资料.
J_John 2003-04-26
  • 打赏
  • 举报
回复
难道c++里面没有这样的方法吗
J_John 2003-04-26
  • 打赏
  • 举报
回复
换种方式当然好.

这类的问题其实是个牛角尖.我只是想问问.

毕竟C++应该提供一种办法处理全局变量初始化时弹出的异常.
J_John 2003-04-26
  • 打赏
  • 举报
回复
用这个方法,是可以报错.但是错误处理并不集中.
其实我的想法是有一个可以集中处理这个错误的地方.
如果说提供一个函数接口这种方法也不好.不觉得很别扭吗?

最好是像内存不足处理函数一样.具体函数名我忘了,反正是一个set,功能是设置一个函数,使其作为在内存不足时调用,以提供一次处理的机会.

本来main内的函数调用可以在main里设置一个catch就行了,问题就是这是全局变量初始化.
其实即使有内存不足处理函数,也没有办法main里调用.毕竟全局初始化是在main之前.
ghtsao 2003-04-26
  • 打赏
  • 举报
回复
可以换种方式,用指针=new的方式对态创建对象,在Main里就可以捕获了。
积木 2003-04-26
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
class CInit
{
public:
CInit();
};

CInit::CInit()
{
try{
throw(1);
}
catch(int i){ cout<<i<<endl; }
};


CInit Init; //弹出异常

int main(void)
{
}

64,647

社区成员

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

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