0

有没有办法在 Visual C++ 中暂时禁用第一次机会异常?

像这样的东西:

void someFunc() {
   disableFirstChanceExceptions();

   try {
     // some code
   }
   catch (std::exception& e) {
     // some code
   }
   catch (...) {
     // some code
   }

   enableFirstChanceExceptions();
}

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

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

4

2 回答 2

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

你基本上有两个选择:

  • 不要抛出异常,或者
  • 当您的客户很愚蠢时,请忽略。只要您的代码按预期工作,您的代码在内部执行的操作与他们无关。

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

于 2012-03-22T13:17:17.603 回答
0

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

于 2012-03-22T12:58:04.850 回答