我应该包括什么来抛出bad_function_call异常?

时间:2014-01-24 15:46:04

标签: c++ exception std

主题提问。 我试过这个:

throw new std::bad_function_call("!");

有下一个错误:

  

错误C2039:'bad_function_call':不是'std'的成员

     

错误C2061:语法错误:标识符'bad_function_call'

1 个答案:

答案 0 :(得分:8)

This is new in C++11, and comes from the header <functional>。包括那个,并祈祷你有一个足够新的编译器。

顺便说一下,您不应该动态分配异常。它是:

  • 没有意义的,
  • 存储器分配异常风险,
  • 容易使您的捕获网站比它们需要的更复杂。

内存通常用于存储直接抛出的异常对象,因此请使用它。只需写下:

throw std::bad_function_call("!");