在 Visual Studio 中设置当发生某个特定异常或所有异常时中断
当使用 Visual Studio 调试的时候,如果我们的代码中出现了异常,那么 Visual Studio 会让我们的程序中断,然后我们就能知道程序中出现了异常。但是,如果这个异常已经被 catch
了,那么默认情况下 Visual Studio 是不会帮我们中断的。
能否在这个异常发生的第一时间让 Visual Studio 中断程序以便于我们调试呢?本文将介绍方法。
会中断的异常
看下面这一段代码,读取一个根本不存在的文件。我们都知道这会抛出 FileNotFoundException
,随后 Visual Studio 会中断,然后告诉我们这句话发生了异常。
using System;
using System.IO;namespace Walterlv.Demo.DoubiBlogs
{internal class Program{private static void Main(string[] args){File.ReadAllText(@"C:\walterlv\逗比博客\不存在的文件.txt");}}
}
不会中断的异常
现在,我们为这段会出异常的代码加上 try
-catch
:
using System;
using System.IO;namespace Walterlv.Demo.DoubiBlogs
{internal class Program{private static void Main(string[] args){try{File.ReadAllText(@"C:\walterlv\逗比博客\不存在的文件.txt");}catch (IOException){Console.WriteLine("出现了异常");}}}
}
现在再运行,会发现 Visual Studio 并没有在出现此异常的时候中断,而是完成了程序最终的输出,随后结束程序。
设置发生所有异常时中断
有时我们会发现已经 catch
过的代码在后来也可能被证明有问题,于是希望即便被 catch
也要发生中断,以便在异常发生的第一时刻定位问题。
Visual Studio 提供了一个异常窗格,可以用来设置在发生哪些异常的时候一定会中断并及时给出提示。
异常窗格可以在“调试”->“窗口”->“异常设置”中打开:
在异常设置窗格中,我们可以将 Common Language Runtime Exceptions
选项打勾,这样任何 CLR 异常引发的时候 Visual Studio 都会中断而无论是否有 catch
块处理掉了此异常。
如果需要恢复设置,点击上面的恢复成默认的按钮即可。
设置发生特定异常时中断或不中断
当然,你也可以不需要全部打勾,而是只勾选你期望诊断问题的那几个异常。你可以试试,这其实是一个非常繁琐的工作,你会在大量的异常名称中失去眼神而再也无法直视任何异常了。
所以更推荐的做法不是仅设置特定异常时中断,而是反过来设置——设置发生所有异常时中断,除了特定的一些异常之外。
方法是:
- 将整个
Common Language Runtime Exceptions
打勾 - 在实际运行程序之后,如果发生了一些不感兴趣的异常,那么就在下面的框中将此异常取消勾选即可
脱离 Visual Studio 设置
如果程序并不是在 Visual Studio 中运行,那么有没有方法进行中断呢?
一个做法是调用 Debugger.Launch()
,但这样的话中断的地方就是在 Debugger.Launch()
所在的代码处,可能异常还没发生或者已经发生过了。
有没有方法可以在异常发生的那一刻中断呢?请阅读我的另一篇博客:
- .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。
如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
在 Visual Studio 中设置当发生某个特定异常或所有异常时中断相关推荐
- Visual Studio 中 Tab 转换为空格的设置
Visual Studio 中 Tab 转换为空格的设置 在 Visual Studio 中写代码时,按 Tab 键,会自动进行缩进.有时希望实现按 Tab 键,出现多个空格的效果.Visual St ...
- 在Visual Studio中使用Git [关闭]
作为一个长期的Visual SourceSafe用户(和仇恨)我正在讨论与同事转换到SVN ; 他建议改用Git . 显然,它可以在没有中央服务器的情况下用作点对点(我们是一个3开发团队). 我无法找 ...
- 探究Visual Studio中的乱码问题
关于乱码,没遇到皆大欢喜,遇到了头痛不已.在Visual Studio中程序遇到乱码,需要明确三个概念,那么问题就好解决了. 三个字符集概念 源码字符集 MSVC中/source-charset 即源 ...
- Xamarin XAML语言教程Visual Studio中实现XAML预览
2019独角兽企业重金招聘Python工程师标准>>> Xamarin XAML语言教程Visual Studio中实现XAML预览 每次通过编译运行的方式查看XAML文件效果,需要 ...
- 将Visual Studio Code设置为jshell中的默认编辑器
Java Shell( jshell )是用于在Java中学习和进行原型制作的交互式工具. 它是在Java 9中引入的,从那以后,我在演示过程中偶尔使用它来进行一些快速原型制作,或者只是为了验证Jav ...
- Visual Studio中出现弹窗“未将对象引用设置到对象的实例”
Visual Studio中出现弹窗"未将对象引用设置到对象的实例" 我用的是Visual Studio2013版本. 本人使用出现该问题的地方: 1.在编写代码函数体写到花括号后 ...
- 详解在Visual Studio中使用git版本系统 [转]
详解在Visual Studio中使用git版本系统 作者:掷鸡蛋者 , 发布于2012-6-21 这篇教程的预期,是希望没有任何版本使用基础的新手也可以掌握,所以细节较多,不当之处,欢迎指 ...
- visual studio编译linux,在 Visual Studio 中配置 Linux MSBuild C++ 项目
在 Visual Studio 中配置 Linux MSBuild C++ 项目Configure a Linux MSBuild C++ project in Visual Studio 10/16 ...
- powershell 编程_如何使用PowerShell以编程方式更改Visual Studio中的默认浏览器,并可能使自己陷入困境...
powershell 编程 UPDATE: Why my own MacGyver solution was brilliant in its horrible way, the folks over ...
最新文章
- linux救援模式无法识别分区,Linux操作系统出现严重故障后的救援模式
- python mkl freebsd_FreeBSD:在uwsgi中使用python3而不是python2
- angularJS(5)
- gwt 嵌入html_GWT和HTML5画布演示
- 求生之路2浩方联机开始显示服务器,求生之路2怎么联机_求生之路2浩方联机教程_快吧单机游戏...
- 命名参数_告别编码5分钟,命名2小时!史上最全的Java命名规范参考!
- 线段树(多维+双成段更新) UVA 11992 Fast Matrix Operations
- 受婴儿抓阄启发,谷歌让机器臂自学抓取物体,不用标注数据
- 1.8 zip和unzip
- php foreach 传值还是传引用
- Hive编程指南(含目录,高清,免费)
- 太阳系行星运行轨道模拟动画-基于htmlConvas
- 参考文献标引方式_参考文献标注及排写格式
- websocket断开重连解决方案,基于子慕大诗人博客修改 健壮强化版
- 琴生不等式与其他(Jensen Inequation)【粗】
- 更改linux文件/目录的权限、拥有者及用户组
- 【Mac】搜狗输入法干扰声音输出
- 软考高级系统架构设计师系列论文七:论基于构件的软件开发
- 房子、高薪、股权:3C企业为留人才拼福利
- DirectUI,标准界面的又一次挑战!
热门文章
- i5 11260h和i5 10200h差距 i510200h和 酷睿i511260h对比
- douphp快速手动添加后台模块
- 初学者计算机学什么软件好,「推荐」初学者学电脑绘画用什么软件
- 15对金婚夫妻亮相《挑战不可能之加油中国》分享婚姻心得
- 关于模拟退火函数算法(Simulated Annealing Algorithm)的理解(文献阅读笔记)
- error: unkown OS type hvm 解决方法 kvm libvirtd 重新加载已有虚拟机信息
- R语言限制性立方样条回归
- LED大屏互动的互动方式有哪些
- 3D肝脏分割数据集LiTS17下载及nii文件转PNG
- 新零售行业ERP系统为何首选SAP系统