Visual Studio小贴士——加了Try-Catch也能自动定位到异常代码
Visual Studio的调试功能非常强大。当异常发生的时候,能够自动定位到异常发生的地方。但是如果你在代码外层显式的加上了Try-Catch异常捕获的时候,默认情况下,Visual Studio会直接跳到异常处理代码块,而不是出现异常的代码行。
namespace BreakOnException { class Program { static void Main(string[] args) { try { Program p = null; Console.WriteLine(p.GetHashCode()); } catch (System.Exception ex) { } } } }
上面的代码会抛出经典的NullReferrenceException。但是当你在调试状态下运行时,Visual Studio会将代码停在catch这一行,而不是Console.WriteLine这一行。
如果代码简单那倒无所谓,但是假想我们的代码是经过层层的函数调用,最外层却加了这么个Try-Catch,那么异常函数调用内抛出了异常,我们也很难定位到异常出错的代码(StackTrace也只能定位哪一个函数调用出错了)。
这个行为可以通过Debug菜单中的Exception….菜单进行设置。
打开此菜单,在CLR异常的Thrown列打上勾,那么以后遇到CLR的异常就不再是定位到用户处理代码了,而是直接停在抛出异常的代码上。这样可以大大方便我们调试程序的Bug。
你可能对下面的文章感兴趣
本博客遵循CC协议2.5,即署名-非商业性使用-相同方式共享
写作很辛苦,转载请注明作者以及原文链接~
如果你喜欢我的文章,你可以订阅我的博客:-D点击订阅我的文章










最新评论
我都没绑定信用卡他怎么扣我的钱呢?3G流量本身不收费的好像, 但是如果用到了亚马逊的特定服务是要收费的,例如订阅免费的书刊 杂志。如果是你自己给自己推送的那么是不用收费的。
3g是要钱的…
精彩,睇书睇微软都唔够清楚,睇你的文档,一次就懂,好文好文
讲的很详细,就是有点儿长了,回去试一下
不行啊亲