我调用一个API,API的作用是进行一些通信的封装。但是在使用过程不定时的会发生异常导致整个程序崩溃,一直不知道怎么解决这个问题。
我把整个程序每个段都TRY{...} cathc(...){...}了,但还是会崩溃退出,请问有什么办法可以让我捕捉到这个异常,并保持程序不退出。
另外异常类怎么使用?

解决方案 »

  1.   

    就是捕获一常用的
    TRY{} 要判断的异常快
    catch{} 显示出错误
    throw() 抛出异常
      

  2.   

    GetLastError获得错误号,然后你可以查这个错误号
      

  3.   

    1.
    try
    {
     // 你的处理
    }
    catch(...)
    {
     // 当你的处理出现异常的时候,执行这里的代码
     // ...表示全部的异常,也就是说只要发生异常,就执行
    }2.在调试过程中,不过出现异常,调试还是要报错的,但是在执行.exe的时候,就正常进行了.
    这大概也是编译器为了提醒设计者吧,我想.
      

  4.   

    整个程序每个段都TRY{...} cathc(...){...}了,但还是会崩溃退出//
    你上面的情况,我怀疑就是调试的原因,因为调试过程中,遇到异常,就是要报错的!转到exe文件执行,试试...一点点测试,应该可以找到原因的,呵呵...Good luck...
      

  5.   

    catch(...)的条件要设置正确才能捕获的。
      

  6.   

    try
    {
    int i = 0;
    int j = 10/i;
    } catch(...)
    {
    int i = 10;
    }譬如这段程序, 调试时, 这个除0异常一样可以捕获。 所以能不能捕获与调试状态是没有很多关系的。我认为,如果catch(...)这个都捕获不到, 一种可能的原因的程序定义的一些保护性断言。如下:
    try
    {
    ASSERT(FALSE);
    //Test();
    } catch(...)
    {
    int i = 10;
    }
    向上面这样的断言, 异常处理模块就不能捕获。所以如果调用API程序崩溃, 是不是一些条件不符合, 如某些指针必须有效, 你给的可能是无效的。
      

  7.   

    To |:coldname(非常冷) :如果是返回的API指针无效的话,那么一开始就会报错了,我的程序是运行了一段时间后才崩溃的,有时候一天都没问题,有时候1个小时就崩溃了,我计划把所有的代码都TRY过了,还是不行。
    原来我以为是多个线程占用资源冲突的原因,后来改为只用一个线程,其他的都用系统回掉来实现,但还是崩溃了。