加了try-catch也能自动定位到异常代码[VS Tips]
本文来自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]相关推荐
- 5、catch中发生了未知异常,finally代码块如何应对?
catch中发生了未知异常,finally还会执行么? catch发生了异常,finally还是会执行的,并且是finally执行完成后,才会抛出catch中的异常. 不过catch会吃掉try中抛出 ...
- 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) 参考文章: (1)试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) (2)https:// ...
- 中动态路径加载_GOT段在linux系统中实现代码动态加载的作用和其他段的说明
上一节我们看到,当程序想调用系统函数时,在编译阶段无法确认被调用函数所在的虚拟地址.因此必须有机制让程序在运行过程中,在调用系统API的时候有办法去确定所调用的系统函数对应的入口地址,这就是代码运行时 ...
- System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)...
System.BadImageFormatException: 试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) 原文 System.BadImageFormatExce ...
- 解决AssetBundle包加载预制体时,Shader显示异常的问题
解决AssetBundle包加载预制体时,Shader显示异常的问题 参考文章: (1)解决AssetBundle包加载预制体时,Shader显示异常的问题 (2)https://www.cnblog ...
- android加载efi分区,高通Android UEFI XBL 代码流程分析
高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...
- java 强制走catch_关于java:IDE强制使用try / catch包围并且不引发异常
我了解已检查和未检查的异常之间的区别. Java编译器迫使程序员要么用try / catch块包围检查的异常,要么在方法签名中添加throw声明. 但是有时候我看到在Eclipse中,编译器只给我一个 ...
- Catch fox game 抓狐狸Python代码实现
Catch fox game 抓狐狸Python代码实现 实验描述 Write a program to simulate a fox catching game. Suppose there are ...
- Python无法加载vc产生的DLL - 一种异常的情况
Python无法加载vc产生的DLL - 一种异常的情况 本地调试时候一切正常,发布给客户就出现如下错误:无法导入DLL. 最后查明原因是:VC编译dll的设定差异导致. 有问题的设置: 改变后的设置 ...
最新文章
- 数据结构中几种经典排序简介
- 设计功能和界面测试用例一
- 大剑无锋之大数据面试题第一套(选择题)
- boost库学习入门篇
- How to create and apply a patch with Git
- docker的介绍和常用命令
- Repeater使用:绑定时 结合 前台JS及后台共享方法
- mysql 时间2039_Apollo使用MySQL时用关键字作为表名报错
- 磁盘文件系统Fat、Fat32、NTFS、exFAT的优缺点
- opencv学习笔记四十三:CamShift目标跟踪
- MTK超详细启动流程
- python十六进制转pcap文件_python处理pcap文件——数据提取
- sqlldr mysql_Oracle中的SQLLDR工具使用
- 【信息系统分析与设计】【期末考】
- 全局光照:光线追踪、路径追踪与GI技术进化编年史
- nmap——端口扫描_基础命令
- YOLOv5、v7改进之二十六:改进特征融合网络PANet为ASFF自适应特征融合网络
- c#高级编程读书笔记(ado.net的数据库访问)
- 王者荣耀测试自己本命英雄软件,王者荣耀中谁是你的本命英雄测试地址 趣推测试王者荣耀中谁是你的本命英雄...
- openwrt旁路由的设置
热门文章
- 语言auc_Phoenix建模语言(PML)中AUC的计算方法
- 微信jssdk ajax 获取签名,【Golang版】微信access_token、jsapi_ticket、signature签名算法生成示例,开箱即用...
- leetcode算法题--Gas Station
- OpenStack Neutron浅析(三)
- leetcode算法题--环绕字符串中唯一的子字符串★
- Java并发编程:线程的生命周期是个怎样的过程?
- 【JavaScript】parseInt
- c# 串口最简单接收十六进制
- linux c++开发问题汇总
- 与 Josh Bloch 探讨 Java 未来