Windows C ++代码中无法识别的异常

时间:2014-09-22 14:41:59

标签: visual-c++

我们有以下格式的代码部分:

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

每隔一段时间,未知异常代码就会触发,并记录一个未知异常。

我一直认为所有异常都是从std :: exception派生的,因此捕获std :: exception会捕获所有异常。

  1. 我应该抓住其他一些例外吗?

  2. 如果我的代码最终出现在未知的异常处理程序中,有什么方法可以找出实际捕到的异常?

  3. 修改

    我们设法找到问题的原因 - 尽管他们说过,客户没有安装我们的代码所依赖的.NET 3.5,并且在尝试使用XML解析器时系统崩溃了。

1 个答案:

答案 0 :(得分:0)

  

我应该抓住其他一些例外吗?

这取决于您的代码。您调用的库可以抛出不是从std :: exception派生的异常,例子是MFC的CException或Microsoft的_com_error。此外,catch(...)可能会导致访问冲突,这就是为什么我不会在我的代码中使用catch(...)的原因 - 这只是为了我的广泛。

  

2.如果我的代码最终出现在未知异常处理程序中,有什么方法可以找出实际捕到的异常?

您可以在调试器中运行代码并配置调试器以在抛出异常时中断程序(第一次机会)。然后你就确切地知道哪一行代码触发了异常,并且应该能够看到究竟抛出了什么。