Visual Studio 对异常进行了特殊的支持,它能够在进行了特殊设置后,使代码中的try catch块失效。也就是说,一个异常在正常情况下应该能够被某个特殊的try catch块捕获,但是Visual Studio提供了一种特殊的功能,它能够让异常不被try catch 捕获。

在当前已打开一个解决方法的前提下,从“调试”菜单选择“异常”:

上面的对话框显示了Visual Studio能识别的不同类型的异常,上面包含是异常已有的异常类型,如果定义了自己的异常,那么可以点击“点击”按钮,添加自己的异常。

每一种异常后面都有两个复选框,分别是“引发”、“用户未处理”。如果勾选了“引发”对话框,那么调试器就会在抛出该异常时中断,注意,在中断时调试器还没有去查找任何匹配的catch块。如果异常类型的对话框没有勾选,那么只有在该异常未得到处理时候才中断。

下面使用C#代码来演示这个功能:

首先设置NullReferenceException为勾选状态,

然后抛出NullReferenceException异常,并进行捕获,

    class Program
{
static void Main(string[] args)
{
String name = null;
try
{
name.IndexOf('a');//引发NullReferenceException异常,调试中断
}
catch (NullReferenceException) { }
Console.WriteLine("执行完毕");
Console.ReadKey();
}
}

通过观察代码可以发现,虽然对NullReferenceException进行了捕获,但是调试器还是中断了。

通常情况下,要对捕捉和处理一个特殊的异常,这个功能就非常有用。或是怀疑某一组件或库吞噬了某个异常然后又重新抛出了一个新异常,但又不确定在那儿设置断点好,这个功能也很有用。

开发人员一般都会保持“引发”对话框未勾选,因为得到异常处理的异常表明异常类型已预见到了异常,并会对他进行处理;应用程序才会继续执行。

【Visual Studio】Visual Studio对CLR异常的特殊支持的更多相关文章

  1. [Android Studio] Android studio 多渠道打包(超简洁版)

    [Android Studio] Android studio 多渠道打包(超简洁版) 转载:http://xuyazhou.com/archives/461 http://relex.me/usin ...

  2. 对CLR异常和状态管理的一点理解

    一:自己的感悟 今天读到<CLR via C#>的异常和状态管理这一章,作者给出了关于异常处理的诸多建议,里面有一些建议自己深有体会,比如说使用可靠性换取开发效率这一节.之前自己对异常怎么 ...

  3. [Android Studio] Android Studio常用快捷键

    [Android Studio] Android Studio常用快捷键   (会持续更新)这边讲的常用快捷键是指做完Keymap到Eclipse后的,不是纯Android Studio的,这边主要讲 ...

  4. .Net CLR异常简析

    楔子 前面一篇研究了下C++异常的,这篇来看下,CLR的异常内存模型,实际上都是一个模型,承继自windows异常处理机制.不同的是,有VC编译器(vcruntime.dll)接管的部分,被CLR里面 ...

  5. 解决Visual Studio 2013 XAML设计器异常

    今天使用Visual Studio 2013打开一个windows 应用商店程序的时候,发现出现如下异常:    at System.Windows.Input.Cursor.LoadFromFile ...

  6. visual studio 2010 C语言声明异常

    如下这段程序,是C_Primer_plus_第五版内的一个复习题答案(感觉声明i的值有问题),在GCC上面可以运行,但是移植到VS2010就一堆错误, #include<stdio.h> ...

  7. Visual Studio编辑器“智能提示(IntelliSense)”异常的解决方案

    1.删除工程中的 .suo 文件. 2.重启vs

  8. [Visual studio] Visual studio 2017添加引用时报错未能正确加载ReferenceManagerPackage包的解决方法

    转载原文:http://www.ynpxrz.com/n1806804c2023.aspx 1.打开VS2017下的Developer Command Prompt for VS 2017 2.然后在 ...

  9. 开发工具-Visual Studio / Visual Studio Code 官方下载地址

    更新记录 2022年6月10日 完善标题. Visual Studio官方下载地址 https://visualstudio.microsoft.com/ Visual Studio Code官方下载 ...

随机推荐

  1. Map集合遍历的四种方式理解和简单使用

    ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后根据键获取到值 for(String s:m ...

  2. Linux 僵尸进程的筛选和查杀

    一.筛选 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 二.查杀 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' ...

  3. 【Java】 剑指offer(66) 构建乘积数组

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 给定一个数组A[0, 1, …, n-1],请构建一个数组B[ ...

  4. django基类View.as_view()

    参考:https://www.zmrenwu.com/post/53/ 详细见参考 一般请求的判断方法: def view(request, *args, **kwargs): if request. ...

  5. 如何在VS Code中进行golang编程

    在VS Code中编程 使用Visual Studio Code的Go扩展,您可以获得诸如IntelliSense,代码导航,符号搜索,括号匹配,片段等语言功能,这些功能将帮助您进行Golang开发. ...

  6. Shell学习之Shell特性(一)

    Shell学习之Shell特性 目录 命令和文件自动补齐功能 命令历史记忆功能 history.上下键.!number.!string.!$.!! 别名功能 alias.unalias cp.~use ...

  7. Angular 个人深究(三)【由Input&Output引起的】

    Angular 个人深究(三)[由Input&Output引起的] 注:最近项目在做别的事情,angular学习停滞了 1.Angular 中 @Input与@Output的使用 //test ...

  8. egrep 实用参数

    -n :顺便输出行号 -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!-r : --recursive  -i :忽略大小写的不同,所以大小写视为相同 -c :计算找到 '搜寻字符串' ...

  9. 13,EasyNetQ-错误条件

    在本节中,我们将看看任何消息系统中可能出现的各种错误情况,并查看EasyNetQ如何处理它们. 1,我的订阅服务死亡 你已经写了一个订阅了我的NewCustomerMessage的windows服务. ...

  10. web开发 入门

    插件 ,索引文件,js目录,视图目录,资产目录,css目录,数据目录,font-awesome-4.7.0目录,图像目录. 引导程序 框架.字体.layer,mockjs.paging分页.树网格.t ...