VS2010 Try-Catch自动定位到异常代码
2013-05-28 22:39
253 查看
Visual Studio的调试功能非常强大。当异常发生的时候,能够自动定位到异常发生的地方。但是如果你在代码外层显式的加上了Try-Catch异常捕获的时候,默认情况下,Visual Studio会直接跳到异常处理代码块,而不是出现异常的代码行。
![](http://www.imkevinyang.com/wp-content/uploads/2009/10/image_thumb5.png)
如果代码简单那倒无所谓,但是假想我们的代码是经过层层的函数调用,最外层却加了这么个Try-Catch,那么异常函数调用内抛出了异常,我们也很难定位到异常出错的代码(StackTrace也只能定位哪一个函数调用出错了)。
这个行为可以通过Debug菜单中的Exception….菜单进行设置。
![](http://www.imkevinyang.com/wp-content/uploads/2009/10/image_thumb6.png)
打开此菜单,在CLR异常的Thrown列打上勾,那么以后遇到CLR的异常就不再是定位到用户处理代码了,而是直接停在抛出异常的代码上。这样可以大大方便我们调试程序的Bug。
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这一行。
![](http://www.imkevinyang.com/wp-content/uploads/2009/10/image_thumb5.png)
如果代码简单那倒无所谓,但是假想我们的代码是经过层层的函数调用,最外层却加了这么个Try-Catch,那么异常函数调用内抛出了异常,我们也很难定位到异常出错的代码(StackTrace也只能定位哪一个函数调用出错了)。
这个行为可以通过Debug菜单中的Exception….菜单进行设置。
![](http://www.imkevinyang.com/wp-content/uploads/2009/10/image_thumb6.png)
打开此菜单,在CLR异常的Thrown列打上勾,那么以后遇到CLR的异常就不再是定位到用户处理代码了,而是直接停在抛出异常的代码上。这样可以大大方便我们调试程序的Bug。
![](http://www.imkevinyang.com/wp-content/uploads/2009/10/image_thumb7.png)
相关文章推荐
- Visual Studio小贴士——加了Try-Catch也能自动定位到异常代码
- 加了try-catch也能自动定位到异常代码[VS Tips]
- 代码健壮性--异常处理中try catch finall throw throws五个关键字学习
- 用try...catch对异常代码进行处理
- 确切定位c++代码中异常抛出位置的两个方法 (以VS2010调试为例)
- 调试运行过程中,位于try-catch中的异常代码是否中断的选项
- 确切定位c++代码中异常抛出位置的两个方法 (以VS2010调试为例)
- VS2010下使用dmp文件和pdb文件定位程序异常代码行号的注意事项
- Java异常处理,try-catch
- VS2010 自动跳过代码现象
- iOS - try~catch捕获异常防止崩溃简单实用
- java,异常处理,throwable和try...catch[zz]
- iOS捕获异常,常用的异常处理方法 try-catch-finally
- Java中处理异常(try/catch)的快捷键
- C++中异常处理的语法 try catch throw
- JavaSE_43th_异常的捕获和处理(try-catch-finally)
- 基于日志的代码缺陷自动定位小工具
- 【慕课笔记】第一章 异常与异常处理 第3节 练习try...catch...finally
- VS2010(Asp.net)中空格加点和代码自动换行的两个有用的快捷键!
- javascript学习(4)异常处理 try-catch 和 onerror