暂时禁用第一次机会例外

Temporally disable first-chance exceptions

本文关键字:机会 第一次      更新时间:2023-10-16

在Visual C++中有没有一种临时禁用首次机会异常的方法?

类似这样的东西:

void someFunc() {
   disableFirstChanceExceptions();
   try {
     // some code
   }
   catch (std::exception& e) {
     // some code
   }
   catch (...) {
     // some code
   }
   enableFirstChanceExceptions();
}

我知道什么是第一次机会例外以及如何使用它们。

问题是,我正在分发一个DLL,其中使用了异常
不幸的是,如果客户在他的程序中使用调试器,他会注意到我的实习生异常
这并不是说我想隐藏它们,更多的是我想摆脱这些支持问题。

  • 您的代码抛出异常
  • 您的客户坚持对您的代码运行调试器,明确地将其配置为在第一次出现异常时中断

你基本上有两个选择:

  • 不要抛出异常,或者
  • 忽略客户的愚蠢。您的代码在内部所做的与他们无关,只要它按预期运行

我建议后者。如果他们遇到在第三方代码中抛出和捕获异常的问题,他们会发现自己无法使用很多库。他们需要长大,开始表现得像他们知道自己在做什么。

第一次机会异常不能在代码中打开和关闭(只谈论windows、vs、c++链,不熟悉其他平台)。这是构建在运行时系统中的,以使调试成为可能。调试器可以被配置为忽略一些或所有首次出现的异常。您可以使用ctrl+alt+e调出VS调试器的异常处理行为菜单。这将允许调试客户端筛选调试器捕获的所需内容。