2014-05-06 33 views
1

我有兩個問題:雖然它是try/catch,異常是否會結束一個線程?

如果我有這樣的方法:

public void DoMyWork() 
{ 
    throw new MyException(anyString); 
} 

...我把它叫做async這樣的:

首先,將在例外情況會被這樣的嘗試塊攔截嗎?如果是的話,線程是否會被終止,因爲通常線程會停止,但是如果我發現它會結束,或者我必須實現一個CancellationToken

+0

你試過了嗎? –

+0

問題是,它不會捕捉到異常,也許它會和我啞:D,所以我想在這裏問。 –

回答

1

首先,將除能與像 這個try塊逮住?

不,它不會被捕獲。

您需要將DoMyWork方法中的代碼包裝到try/catch中以捕獲該異常。

注意:這將導致「未處理的異常」,任何未處理的異常將會終止進程(應用程序崩潰)。

+0

好的謝謝。所以,我不能繼續前進,並試着繞過它,因爲該方法也應該正常使用,應該是免費的,你將如何處理異常,這就是問題所在。 –

+0

唯一的辦法是在預期的地方捕捉異常,如果你不會受到「應用程序崩潰」的懲罰 –

+0

好的,有沒有其他的選擇?像任務一樣?我可以用它們做多遠? –

2

1)不,它不會。線程中的異常必須在線程中處理。主線程不控制線程的執行流程,因此不捕獲異常。

2)應用程序將終止。更多在這裏:http://msdn.microsoft.com/en-us/library/ms228965(v=vs.110).aspx

+0

點2看起來不對。應用程序將終止。 –

+0

嗯好吧,我不能繼續前進,並試着繞過它,因爲該方法也應該正常使用,它應該是免費的,你將如何處理異常,這就是問題所在。 –

+0

@SriramSakthivel正式注意,更新回答 –

相關問題