为什么安装 Visual Studio 2008 后,catch(TException) 处理块行为在调试器下有所不同?

2023-11-21

考虑下面的控制台应用程序,该应用程序具有一个带有通用捕获处理程序的方法,用于捕获类型的异常TException.

当此控制台应用程序使用“调试”配置构建并在 Visual Studio 调试器下执行(即通过 *.vshost.exe)时,在 Visual Studio 2005 和 Visual Studio 2008 中都会失败。

我相信这个问题是在我安装了 Visual Studio 2008 之后才出现的。

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(Environment.Version);
        CatchAnException<TestException>();

        Console.ReadKey();
    }

    private static void CatchAnException<TException>()
        where TException : Exception
    {
        Console.WriteLine("Trying to catch a <{0}>...", typeof(TException).Name);
        try
        {
            throw new TestException();
        }
        catch (TException ex)
        {
            Console.WriteLine("*** PASS! ***");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Caught <{0}> in 'catch (Exception ex)' handler.", ex.GetType().Name);
            Console.WriteLine("*** FAIL! ***");
        }
        Console.WriteLine();
    }
}

internal class TestException : Exception
{
}

在以下情况下,代码的行为符合预期:

  • 如果使用“Release”配置构建,则会成功。
  • 如果直接通过 *.exe 执行,而不是通过 Visual Studio (F5) 执行,则会成功。
  • 如果通过放置附加调试器System.Diagnostics.Debugger.Launch();第 1 行Main()它仍然成功。

当控制台应用程序从 Visual Studio(2005 或 2008)中启动并因此在 ConsoleApplication.vshost.exe 下执行时,它会失败。

这是我的失败案例的输出

2.0.50727.3068
Trying to catch a <TestException>...
*** FAIL! ***

Caught <TestException> in 'catch (Exception ex)' handler.
  Expected: <TestException>
    Actual: <TestException>
  Result of typeof(TException) == ex.GetType() is True

是什么导致了这种特殊的失败?


这确实很奇怪。我验证了 VB.Net 也存在该问题,因此这不是 C# 特定的问题。它需要由核心调试器团队确认,但它看起来确实像一个错误。

请在以下位置提交错误Connect并将错误编号作为评论发布给我的 OP,以便我可以确保将其路由到正确的团队。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么安装 Visual Studio 2008 后,catch(TException) 处理块行为在调试器下有所不同? 的相关文章

  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • IEnumerable 与 IReadOnlyList

    选择有什么区别IEnumerable
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 未安装 Visual Studio;这对于 Windows 开发是必要的

    My 颤振医生 https docs flutter dev get started install windows run flutter doctor是说 Visual Studio develop for Windows X Visu
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 点符号与 $elemMatch

    我有一个 unitScores 集合 其中每个文档都有一个 id 和一个文档数组 如下所示 id ObjectId 52134edd5b1c2bb503000001 scores userId ObjectId 5212bf3869bf35
  • PHPStorm 中是否可以实现 Ruby 语法高亮显示?

    I found this但老实说不确定如何安装它或它是否适用 谢谢 您链接的 Ruby 插件仅为 IntelliJ IDEA Ultimate 设计 它不适用于 PhpStorm 看这个答案更多细节 但是 可以使用 PhpStorm 中的
  • 在循环之前或循环中声明变量之间的区别?

    我一直想知道 一般来说 在循环之前声明一个一次性变量 而不是在循环内重复声明 是否会产生任何 性能 差异 A 完全没有意义 Java 中的示例 a 循环前声明 double intermediateResult for int i 0 i
  • 确定 GAM 平滑对象的导数

    我有一个非常简单的时间序列数据集 由单个变量的年平均值 AVERAGE 组成 我希望研究时间序列 趋势 分量的变化率 一阶导数 和加速度 二阶导数 以及相关的标准误差 我使用 MGCV 的 GAM 和 PREDICT 函数获得了 趋势 如下
  • 核心数据内存使用和内存警告

    我有这个问题 我在核心数据中有一个图像数据库 我获取所有图像 大约 80MB 并放入 NSMutableArray 中 对象被正确错误 NSArray fetchResults self managedObjectContext execu
  • Unity PerRequestLifetimeManager 在不同请求中重用对象

    我已经为我们的项目设置了 Unity 的依赖注入 该项目本身是一个同时使用 MVC 和 Web API 的 ASP NET 应用程序 对于数据库上下文 我正在使用PerRequestLifetimeManager 这样做是为了使业务逻辑的不
  • wpf - 我可以在 wpf 中使用 System.Drawing 吗?

    我正在将图像保存在数据库中 但是如何从数据库中检索该图像 当我尝试使用system drawing 它显示错误 一些人说我不能在wpf中使用system drwaing 甚至不能使用dll文件 我的代码是 private void btnS
  • 子 pom 中存在重复的artifactId

    我希望父 pom 为众多子 pom 定义一些要继承的属性 但是 当我尝试在父 pom 中的这些属性之一中使用 artifactId 时 它会在子项的有效 pom 中重复 下面是非常基本的示例 假设我拥有 poms 所需的所有有效字段 gro
  • ModelSim-Altera 错误

    我正在使用 Ubuntu Linux 14 04 LTS 和 Altera Quartus 15 0 网络版 由于许可错误 我很难模拟我的设计 我正在设计一个 LCD driverVEEK MT友晶科技的液晶触摸屏旋风 IV EP4CE11
  • 如何使用freopen_s函数

    为了从文本文件读取输入 我编写了以下代码 int main int x ifndef ONLINE JUDGE freopen input txt r stdin endif scanf d x printf d n x system pa
  • 为什么“git clone”不采用 refspec?

    看来很多人都去换了git clone与组合git init git fetch 这看起来相当愚蠢 不幸的是像 Jenkins 这样的工具不会为你做这件事 那么为什么 git clone 不像 git fetch 那样采用 refspec 呢
  • 如何在 Ruby 中获取 Enumerable 的第 n 个元素

    例如 要返回第 10 000 个质数 我可以编写 require prime Prime first 10000 last gt 104729 但是创建一个巨大的中间数组 只是为了检索它的最后一个元素感觉有点麻烦 鉴于 Ruby 是一种如此
  • 强制调用父方法

    是否有 或模式 强制调用父方法 我有一个像这样的抽象类 abstract class APrimitive public function validate Do some stuff that applies all classes th
  • 多个main方法有什么用?

    c 使我们能够使用方法定义多个类 Main方法是程序执行的入口点 那么为什么我们要拥有多个地方来执行程序呢 多个 main 方法相对于单个 main 方法有什么优点 Edit 示例 cs Class Example 1 public sta
  • 打字稿用只读属性初始化对象

    有没有办法初始化对象文字并同时声明其具有只读属性的接口 例如 let a readonly b 2 readonly c 3 您可以使用as const断言 let a b 2 c 3 as const typed as readonly
  • 为什么我的异步 ASP.NET Web API 控制器阻塞主线程?

    我有一个 ASP NET Web API 控制器thought将异步操作 控制器设计为在第一个请求时休眠 20 秒 但立即为任何后续请求提供服务 所以我预计的时间表是这样的 提出要求1 提出要求2 提出要求3 要求 2 次退货 请求 3 个
  • 如何在 Ruby 中交错不同长度的数组

    如果我想在 Ruby 中交错一组数组 并且每个数组的长度相同 我们可以这样做 a zip b zip c flatten 但是 如果数组的大小可以不同 我们如何解决这个问题呢 我们可以做这样的事情 def interleave args r
  • UITextView - 根据 SwiftUI 中的内容调整大小

    我试图弄清楚如何使 UITextView 的大小取决于它在 SwiftUI 中的内容 我将 UITextView 包裹在UIViewRepresentable如下 struct TextView UIViewRepresentable Bi
  • 如何以编程方式截取屏幕截图(Swift、SpriteKit)

    我尝试了建议的方法 但输出是白色的空白屏幕截图 这让我假设我没有在视图中添加任何内容 以下是我向视图添加图形的方法 addChild 方法随 SpriteKit 一起提供 它接受 SKSpriteNodes addChild backgro
  • 为什么安装 Visual Studio 2008 后,catch(TException) 处理块行为在调试器下有所不同?

    考虑下面的控制台应用程序 该应用程序具有一个带有通用捕获处理程序的方法 用于捕获类型的异常TException 当此控制台应用程序使用 调试 配置构建并在 Visual Studio 调试器下执行 即通过 vshost exe 时 在 Vi