在 Visual Studio 中设置当发生某个特定异常或所有异常时中断

栏目: ASP.NET · 发布时间: 4年前

内容简介:当使用 Visual Studio 调试的时候,如果我们的代码中出现了异常,那么 Visual Studio 会让我们的程序中断,然后我们就能知道程序中出现了异常。但是,如果这个异常已经被能否在这个异常发生的第一时间让 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");
        }
    }
}

在 Visual Studio 中设置当发生某个特定异常或所有异常时中断

不会中断的异常

现在,我们为这段会出异常的代码加上 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 并没有在出现此异常的时候中断,而是完成了程序最终的输出,随后结束程序。

在 Visual Studio 中设置当发生某个特定异常或所有异常时中断

设置发生所有异常时中断

有时我们会发现已经 catch 过的代码在后来也可能被证明有问题,于是希望即便被 catch 也要发生中断,以便在异常发生的第一时刻定位问题。

Visual Studio 提供了一个异常窗格,可以用来设置在发生哪些异常的时候一定会中断并及时给出提示。

异常窗格可以在“调试”->“窗口”->“异常设置”中打开:

在 Visual Studio 中设置当发生某个特定异常或所有异常时中断

在异常设置窗格中,我们可以将 Common Language Runtime Exceptions 选项打勾,这样任何 CLR 异常引发的时候 Visual Studio 都会中断而无论是否有 catch 块处理掉了此异常。

在 Visual Studio 中设置当发生某个特定异常或所有异常时中断

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

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

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

在 Visual Studio 中设置当发生某个特定异常或所有异常时中断

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

方法是:

Common Language Runtime Exceptions

在 Visual Studio 中设置当发生某个特定异常或所有异常时中断

脱离 Visual Studio 设置

如果程序并不是在 Visual Studio 中运行,那么有没有方法进行中断呢?

一个做法是调用 Debugger.Launch() ,但这样的话中断的地方就是在 Debugger.Launch() 所在的代码处,可能异常还没发生或者已经发生过了。

有没有方法可以在异常发生的那一刻中断呢?请阅读我的另一篇博客:

在 Visual Studio 中设置当发生某个特定异常或所有异常时中断


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

解密搜索引擎技术实战

解密搜索引擎技术实战

罗刚 / 2011-6 / 69.80元

《解密搜索引擎技术实战-Lucene&Java精华版(附盘)》,本书主要包括总体介绍部分、爬虫部分、自然语言处理部分、全文检索部分以及相关案例分析。爬虫部分介绍了网页遍历方法和如何实现增量抓取,并介绍了从网页等各种格式的文档中提取主要内容的方法。自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现以及在搜索引擎中的实用等细节,同时对文档排重、文本分类、自动聚类、句法分析树......一起来看看 《解密搜索引擎技术实战》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具