2012-02-09 118 views
-1

语言:C#无法处理线程内的异常

我使用backgroundworker来运行我的长时间工作。我碰巧看到一个我应该忽略的例外。当我在代码块中处理异常时,它不会在块本身中捕获。相反,它被抓到了,我在那里调用了背景工作者的蹲位。

问题情境

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 

任何一个可以帮助我...

+2

不能不能看到什么代码产生这种行为... – 2012-02-09 04:43:52

+1

请发布示例代码。 – 2012-02-09 04:44:22

+0

我认为它在执行fun1()或跳过fun1()之前抛出Backgroundworker1_dowork()中的异常。查看异常的调用堆栈 – evpo 2012-02-09 05:18:16

回答

0

您提供不会编译,所以很难确定这个问题的代码。然而,对fun1的调用失败或fun1中的catch块失败。

我会在尝试fun1之前放一个Debug.WriteLine("In fun1");。如果你没有在输出中看到这一点,那么你知道调用fun1失败。如果你看到这个输出,那么你知道catch块失败。