2014-11-03 60 views
1

我對於異步編程非常新穎。當拋出異常時,我習慣了Visual Studio停止錯誤的行。在類似下面的代碼,調試器正常停止和亮點線2針對Windows的VS Express 2013不會停止在引發異常的(異步)行

int[] array = new int[] { 0, 1, 2 }; 
int throwsException = array[3]; 

但是,當一個異常在一個被稱爲用await,比我完全丟失,並且調試器簡單地停止在AWAIT線方法時發生。

public async void ThrowException() { 
    int[] array = new int[] { 0, 1, 2 }; 
    int throwsException = array[3]; 
} 

// Debugger stops here 
await ThrowException(); 

的問題是,我有一個的await法某處引發錯誤的100和第200一次調用之間。我不知道如何在調試器中發現問題! 有沒有方法可以輕鬆識別有問題的代碼行?

回答

2

您可以選擇調試器將停止的異常,請查看visual studio中的調試/異常選項。

http://msdn.microsoft.com/en-us/library/038tzxdw.aspx

它看起來就像是一些內部Windows錯誤,這樣調試器可能不會停在那裏,如果沒有配置,所以你可以配置Visual Studio來停止,即使在最內層的窗戶異常,然後看看在調用堆棧中。

或者你可以用你的代碼中的「公共異步無效ThrowException()」函數與try/catch塊中,放置一個破發點的捕捉內

+0

謝謝你的提示!我去了DEBUG菜單,點擊「Exceptions」並勾選了每個複選框。現在代碼停止在錯誤!涼! – Daniel 2014-11-03 11:31:20

+1

ahahahahh是的,我通常也是這樣做的,只記得再次取消勾選,否則會很痛苦!現在更新你的帖子你發現的異常,讓其他有相同問題的人可能有更多的信息可以使用 – Robson 2014-11-03 11:32:52