本文来自Kevin Yang博客 作者:Kevin Yang

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。

转载于:https://www.cnblogs.com/Top1/archive/2010/08/18/1802592.html

加了try-catch也能自动定位到异常代码[VS Tips]相关推荐

  1. 5、catch中发生了未知异常,finally代码块如何应对?

    catch中发生了未知异常,finally还会执行么? catch发生了异常,finally还是会执行的,并且是finally执行完成后,才会抛出catch中的异常. 不过catch会吃掉try中抛出 ...

  2. 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

    试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) 参考文章: (1)试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) (2)https:// ...

  3. 中动态路径加载_GOT段在linux系统中实现代码动态加载的作用和其他段的说明

    上一节我们看到,当程序想调用系统函数时,在编译阶段无法确认被调用函数所在的虚拟地址.因此必须有机制让程序在运行过程中,在调用系统API的时候有办法去确定所调用的系统函数对应的入口地址,这就是代码运行时 ...

  4. System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)...

    System.BadImageFormatException: 试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) 原文 System.BadImageFormatExce ...

  5. 解决AssetBundle包加载预制体时,Shader显示异常的问题

    解决AssetBundle包加载预制体时,Shader显示异常的问题 参考文章: (1)解决AssetBundle包加载预制体时,Shader显示异常的问题 (2)https://www.cnblog ...

  6. android加载efi分区,高通Android UEFI XBL 代码流程分析

    高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...

  7. java 强制走catch_关于java:IDE强制使用try / catch包围并且不引发异常

    我了解已检查和未检查的异常之间的区别. Java编译器迫使程序员要么用try / catch块包围检查的异常,要么在方法签名中添加throw声明. 但是有时候我看到在Eclipse中,编译器只给我一个 ...

  8. Catch fox game 抓狐狸Python代码实现

    Catch fox game 抓狐狸Python代码实现 实验描述 Write a program to simulate a fox catching game. Suppose there are ...

  9. Python无法加载vc产生的DLL - 一种异常的情况

    Python无法加载vc产生的DLL - 一种异常的情况 本地调试时候一切正常,发布给客户就出现如下错误:无法导入DLL. 最后查明原因是:VC编译dll的设定差异导致. 有问题的设置: 改变后的设置 ...

最新文章

  1. 数据结构中几种经典排序简介
  2. 设计功能和界面测试用例一
  3. 大剑无锋之大数据面试题第一套(选择题)
  4. boost库学习入门篇
  5. How to create and apply a patch with Git
  6. docker的介绍和常用命令
  7. Repeater使用:绑定时 结合 前台JS及后台共享方法
  8. mysql 时间2039_Apollo使用MySQL时用关键字作为表名报错
  9. 磁盘文件系统Fat、Fat32、NTFS、exFAT的优缺点
  10. opencv学习笔记四十三:CamShift目标跟踪
  11. MTK超详细启动流程
  12. python十六进制转pcap文件_python处理pcap文件——数据提取
  13. sqlldr mysql_Oracle中的SQLLDR工具使用
  14. 【信息系统分析与设计】【期末考】
  15. 全局光照:光线追踪、路径追踪与GI技术进化编年史
  16. nmap——端口扫描_基础命令
  17. YOLOv5、v7改进之二十六:改进特征融合网络PANet为ASFF自适应特征融合网络
  18. c#高级编程读书笔记(ado.net的数据库访问)
  19. 王者荣耀测试自己本命英雄软件,王者荣耀中谁是你的本命英雄测试地址 趣推测试王者荣耀中谁是你的本命英雄...
  20. openwrt旁路由的设置

热门文章

  1. 语言auc_Phoenix建模语言(PML)中AUC的计算方法
  2. 微信jssdk ajax 获取签名,【Golang版】微信access_token、jsapi_ticket、signature签名算法生成示例,开箱即用...
  3. leetcode算法题--Gas Station
  4. OpenStack Neutron浅析(三)
  5. leetcode算法题--环绕字符串中唯一的子字符串★
  6. Java并发编程:线程的生命周期是个怎样的过程?
  7. 【JavaScript】parseInt
  8. c# 串口最简单接收十六进制
  9. linux c++开发问题汇总
  10. 与 Josh Bloch 探讨 Java 未来