2014-11-03 17 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