2012-02-09 115 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塊失敗。