本人有一个控制台程序,里面引用了微软的一个DLL库,然后调用里面有一个方法。为了使各位容易看,我把代码精简全部代码如下:
static void Main(string[] args)
{
try
{
Document doc=New Document();
string s=doc.Text;
}
catch { }
}运行上面的代码后,应该是有异常也会被try跳过的。但操作系统却弹出了如下的框:
问题是:我能捕获到操作系统的异常吗?或者跳过这样的异常?因为这个DLL是外部的,没办法干预,所以请教下各位。PS:本人已经尝试过API的SetUnhandledExceptionFilter。一般异常可以捕获,但是我上面这个还是捕获不到。还有别的办法没?C#异常

解决方案 »

  1.   

    人家是在另一个线程里面发生的错误,你当然捕获不到。
    通过AppDomain.CurrentDomain.UnhandledException记一下日志就是不错的情况了。
    如果AppDomain.CurrentDomain.UnhandledException捕获不到的话就只能去看系统的日志了。
      

  2.   


    嗯,我明白,一般这样的异常很难捕获,现在我遇到最大的问题是,弹出这个框后要手动去点确定,程序才继续执行。
    可以尝试找到窗体的句柄,关掉。
    不过这东西怎么做都别扭,因为你是调用别人的dll导致的问题,如果人家那里面的逻辑就是错的,那你怎么搞也是错的