class A
{
public:
    virtual void test(void) = 0;    A()
    {
        kkkk();
    }    void kkkk(void)
    {
        test();
    }
};class B : public A
{
public:
    void test(void)
    {
       
    }
};上述代码模拟了一个runtime异常:当我去new一个B的类时,程序就会报run time异常。
seh和try..catch方法肯定无法捕获这个异常,并且无法阻止系统弹出run time异常的对话框。
请问:
1,我如何让程序不弹出run time异常的对话框
2,怎样可以捕获到这个异常

解决方案 »

  1.   

    楼主程序设计是错误的,原因说明如下:在new B时,会先调用基类A的构造函数,然后又调用kkkk函数,kkkk函数调用虚函数test,但此时由于B还没有进行初始化完毕,也就是B还没有创建,调用没有初始化完毕的B肯定是会有异常的。
      

  2.   

    回楼上,我知道是错误的。
    我不是说了嘛,我用错误代码模拟了一个run time异常。
    我的问题是想捕捉这个异常,屏蔽run time对话框。
      

  3.   

    这种runtime error 对话框出来了,就是要提醒你,去修改这个错误...
      

  4.   


    使用 SEH 异常处理。
    这是 Microsoft 在 Win2000 之后引入的机制。
      

  5.   


    程序最终交到使用者手上后,不是调试版本,没有"在命令行上看到输出结果"这一说。
    不做异常捕捉,根本不知道哪里出现了问题。SetErrorMode方法可以屏蔽掉对话框了。
    但是异常还是捕获不到。
      

  6.   


    不可能!
    所有未被处理的异常都会被 SEH 处理。检查你的 SEH 是否使用了正确的处理函数 ::SetUnhandledExceptionFilter