无法处理线程内的异常

时间:2012-02-09 04:42:38

标签: c# multithreading exception

语言:C#

我使用背景工作来完成我的长期工作。我碰巧看到一个例外,我应该忽略它。当我在代码块中处理异常时,它不会被块本身捕获。相反它被抓住了,我调用了backgroundworker的dowork。

问题情况

    Backgroundworker1_dowork()
    {
      try
       {
         fun1();
       }
      catch(Exception e)
       {
      console.writeline("bg block");
        }
    }
   void fun1()
   {
     try
        { 
            throw new exception("ex1");
        }
     catch(Exception ex)
       { 
           Console.writeline("code block");
       }
    }

   output: bg block Expected: code block

任何人都可以帮助我......

1 个答案:

答案 0 :(得分:0)

您提供的代码无法编译,因此很难确定问题。然而,对fun1的调用失败或者fun1中的catch块失败。

我会在尝试fun1之前加上Debug.WriteLine("In fun1");。如果你在输出中没有看到这个,那么你就知道对fun1的调用失败了。如果看到此输出,则表示catch块失败。