我如何猜测可能在C ++中抛出的所有异常?

时间:2015-06-02 16:56:04

标签: c++

我包含第三方头文件。它具有可能/可能不会抛出异常的函数。在我的源代码中,如何确定可能从该文件中抛出哪些异常?这是一个面试问题。我的回复是通过函数声明并查找异常规范。这可能会给我们一些暗示。有没有其他方法可以预测可能抛出的异常?

1 个答案:

答案 0 :(得分:3)

这有几个方面:

  • 如果为函数声明了异常,则只能抛出那些(当然是派生类),所有其他类都会导致程序终止。
  • 即使为函数声明了异常,也不是每个编译器都实际执行此规则。
  • 如果没有为函数声明异常(一组空的异常!),则可能会抛出任何异常。
  • 合理的代码永远不会抛出任何不是从std::exception派生的东西,所以假设抛出或派生类型是一种很好的方法。
  • 好的代码会记录错误处理,尽管你应该从任何分配内存的函数中隐含地期望std::bad_alloc