簡體   English   中英

catch塊在另一個線程中沒有捕獲異常

[英]catch block not catching exception in another thread

method A()
{
  try
  {
    Thread t = new Thread(new ThreadStart(B));
    t.Start();
  }
  catch(exception e)
  {
    //show message of exception
  }      

}

method B()
{
 // getDBQuery
}

B中的例外但沒有捕獲。 它在.net中合法嗎?

正確,Thread中的異常不會轉發給調用者,Thread應該自己處理。

最一般的答案是你不應該在這里使用(裸)線程。 它效率不高,不方便。

使用任務時 ,在調用Wait()Result時會存儲並引發異常。

A完成執行時, B可能仍然在獨立線程上運行。 因此, A 原則上不可能捕獲B產生的所有異常。

將try-catch移動到B內部。 Thread類不轉發異常。

更好的是,使用允許您傳播和檢查異常的Task

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM