当使用 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 块处理掉了此异常。

如果需要恢复设置,点击上面的恢复成默认的按钮即可。

设置发生特定异常时中断或不中断

当然,你也可以不需要全部打勾,而是只勾选你期望诊断问题的那几个异常。你可以试试,这其实是一个非常繁琐的工作,你会在大量的异常名称中失去眼神而再也无法直视任何异常了。

所以更推荐的做法不是仅设置特定异常时中断,而是反过来设置——设置发生所有异常时中断,除了特定的一些异常之外。

方法是:

  1. 将整个 Common Language Runtime Exceptions 打勾
  2. 在实际运行程序之后,如果发生了一些不感兴趣的异常,那么就在下面的框中将此异常取消勾选即可

脱离 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 中设置当发生某个特定异常或所有异常时中断相关推荐

  1. Visual Studio 中 Tab 转换为空格的设置

    Visual Studio 中 Tab 转换为空格的设置 在 Visual Studio 中写代码时,按 Tab 键,会自动进行缩进.有时希望实现按 Tab 键,出现多个空格的效果.Visual St ...

  2. 在Visual Studio中使用Git [关闭]

    作为一个长期的Visual SourceSafe用户(和仇恨)我正在讨论与同事转换到SVN ; 他建议改用Git . 显然,它可以在没有中央服务器的情况下用作点对点(我们是一个3开发团队). 我无法找 ...

  3. 探究Visual Studio中的乱码问题

    关于乱码,没遇到皆大欢喜,遇到了头痛不已.在Visual Studio中程序遇到乱码,需要明确三个概念,那么问题就好解决了. 三个字符集概念 源码字符集 MSVC中/source-charset 即源 ...

  4. Xamarin XAML语言教程Visual Studio中实现XAML预览

    2019独角兽企业重金招聘Python工程师标准>>> Xamarin XAML语言教程Visual Studio中实现XAML预览 每次通过编译运行的方式查看XAML文件效果,需要 ...

  5. 将Visual Studio Code设置为jshell中的默认编辑器

    Java Shell( jshell )是用于在Java中学习和进行原型制作的交互式工具. 它是在Java 9中引入的,从那以后,我在演示过程中偶尔使用它来进行一些快速原型制作,或者只是为了验证Jav ...

  6. Visual Studio中出现弹窗“未将对象引用设置到对象的实例”

    Visual Studio中出现弹窗"未将对象引用设置到对象的实例" 我用的是Visual Studio2013版本. 本人使用出现该问题的地方: 1.在编写代码函数体写到花括号后 ...

  7. 详解在Visual Studio中使用git版本系统 [转]

    详解在Visual Studio中使用git版本系统    作者:掷鸡蛋者 , 发布于2012-6-21   这篇教程的预期,是希望没有任何版本使用基础的新手也可以掌握,所以细节较多,不当之处,欢迎指 ...

  8. visual studio编译linux,在 Visual Studio 中配置 Linux MSBuild C++ 项目

    在 Visual Studio 中配置 Linux MSBuild C++ 项目Configure a Linux MSBuild C++ project in Visual Studio 10/16 ...

  9. powershell 编程_如何使用PowerShell以编程方式更改Visual Studio中的默认浏览器,并可能使自己陷入困境...

    powershell 编程 UPDATE: Why my own MacGyver solution was brilliant in its horrible way, the folks over ...

最新文章

  1. linux救援模式无法识别分区,Linux操作系统出现严重故障后的救援模式
  2. python mkl freebsd_FreeBSD:在uwsgi中使用python3而不是python2
  3. angularJS(5)
  4. gwt 嵌入html_GWT和HTML5画布演示
  5. 求生之路2浩方联机开始显示服务器,求生之路2怎么联机_求生之路2浩方联机教程_快吧单机游戏...
  6. 命名参数_告别编码5分钟,命名2小时!史上最全的Java命名规范参考!
  7. 线段树(多维+双成段更新) UVA 11992 Fast Matrix Operations
  8. 受婴儿抓阄启发,谷歌让机器臂自学抓取物体,不用标注数据
  9. 1.8 zip和unzip
  10. php foreach 传值还是传引用
  11. Hive编程指南(含目录,高清,免费)
  12. 太阳系行星运行轨道模拟动画-基于htmlConvas
  13. 参考文献标引方式_参考文献标注及排写格式
  14. websocket断开重连解决方案,基于子慕大诗人博客修改 健壮强化版
  15. 琴生不等式与其他(Jensen Inequation)【粗】
  16. 更改linux文件/目录的权限、拥有者及用户组
  17. 【Mac】搜狗输入法干扰声音输出
  18. 软考高级系统架构设计师系列论文七:论基于构件的软件开发
  19. 房子、高薪、股权:3C企业为留人才拼福利
  20. DirectUI,标准界面的又一次挑战!

热门文章

  1. i5 11260h和i5 10200h差距 i510200h和 酷睿i511260h对比
  2. douphp快速手动添加后台模块
  3. 初学者计算机学什么软件好,「推荐」初学者学电脑绘画用什么软件
  4. 15对金婚夫妻亮相《挑战不可能之加油中国》分享婚姻心得
  5. 关于模拟退火函数算法(Simulated Annealing Algorithm)的理解(文献阅读笔记)
  6. error: unkown OS type hvm 解决方法 kvm libvirtd 重新加载已有虚拟机信息
  7. R语言限制性立方样条回归
  8. LED大屏互动的互动方式有哪些
  9. 3D肝脏分割数据集LiTS17下载及nii文件转PNG
  10. 新零售行业ERP系统为何首选SAP系统