我在程序的主入口点里面写如下代码
try
{
    dosomething();
}
catch(Exception ex)
{
    logException(ex);
}因为dosomething调用了几个类库,而这些类库可能抛出类库中未处理的Exception。按我的理解,这些类库中抛出的Exception应该到达主入口点的catch块、并且进行相应处理。
以debug模式启动运行时,情况确实如此。但如果不调试直接执行(debug版本程序),则上述的Exception抛出时,程序弹出对话框,说程序中出现unhandled exception(带有details、continue、quit按钮的那个),这个Exception不会被主入口点的catch块捕获到。程序行为超出了我的预想,不知道该如何解决。

解决方案 »

  1.   

    JzeroBiao(先知) ( ) 信誉:100  2005-08-15 10:08:00  得分: 0  
     
     
       那几个类有没有TRY.....学习~~
     
     
    ——————————————————————————直接产生Exception的代码处并没有写try,但我觉得不应该是这个原因
    因为在debug时exception确实按函数调用堆栈逐层向上传递、一直传递到主入口点被catch块捕获了
      

  2.   

    调试后,有错误的代码TRY?我也不懂学习,交流!
      

  3.   

    基本就是这样:using aLib;
    main ()
    {
      try
      {
        dosomething();
      }
      catch(Exception ex)
      {
        logException(ex);
      }
    }void dosomething()
    {
      aClass a = new aClass;
      while(condition)
      {
        a.dosth();
        foo();
      }
    }______________________________aLib.dll :Class aClass
    {
      public void dosth()
      {
        throw new Exception();
      }
    }程序编译为debug版本
    在debug模式下运行,则dosth中抛出的异常传递到了main中的catch块
    而直接运行,则在dosth抛出异常时,程序弹出上述的对话框,而不是被main中的catch块捕获。
      

  4.   

    Main捕捉不到异常很经常啊,线城意外,静态构造函数里抛出意外都会发生这个情况
    AppDomain.UnhandledException
    Application.ThreadException
    可以帮助你
    至于为啥start without debugging下发生异常而dubug下没有,我猜是线程意外的问题,具体你可以参考exception的source和StackTrace属性 :)
      

  5.   

    psn(psn) ( ) 信誉:100  2005-08-15 16:00:00  得分: 0  
     
     
       Main捕捉不到异常很经常啊,线城意外,静态构造函数里抛出意外都会发生这个情况
    AppDomain.UnhandledException
    Application.ThreadException
    可以帮助你
    至于为啥start without debugging下发生异常而dubug下没有,我猜是线程意外的问题,具体你可以参考exception的source和StackTrace属性 :)——————————————————————————————————确实是线程意外的问题,虽然对其运行机制还不明白,但至少可以先解决问题了。谢谢~~