VS2010 Try-Catch自动定位到异常代码

来源:互联网 发布:wake瑜伽软件下载 编辑:程序博客网 时间:2024/05/18 03:36

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这一行。

image

如果代码简单那倒无所谓,但是假想我们的代码是经过层层的函数调用,最外层却加了这么个Try-Catch,那么异常函数调用内抛出了异常,我们也很难定位到异常出错的代码(StackTrace也只能定位哪一个函数调用出错了)。

这个行为可以通过Debug菜单中的Exception….菜单进行设置。

image

打开此菜单,在CLR异常的Thrown列打上勾,那么以后遇到CLR的异常就不再是定位到用户处理代码了,而是直接停在抛出异常的代码上。这样可以大大方便我们调试程序的Bug。

image


原创粉丝点击