1

我们的教授给了我们一个shell来编写程序。在里面他给了我们一个名为“Maker”的类,它能够抛出异常。考虑到他提供的构造函数的格式,我对如何抛出和捕获错误感到困惑。

他给了我们他自己的特殊异常头文件 CycleFoundException.h,它看起来像这样:

#include <iostream>
#include <exception>

using namespace std;

class CycleFoundException: public exception {
  // Don't add code
};

这是 Maker.h 头文件:

#include "CycleFoundException.h"    

class Maker
{
 private:
  // insert instance variables

 public:
  Maker(int x) throw (CycleFoundException);
};

最后是 cpp shell,Maker.cpp:

#include Maker.h

Maker::Maker(int x) throw (CycleFoundException){
//add code here
}

int main()
{
    return 0;
}

我从未见过这样的构造函数声明。为什么将“抛出(CycleFoundException)”标记到构造函数的声明中?那有必要吗?

给定这种格式,我将如何抛出异常?我是否仍会以与其他方式相同的方式执行此操作,即如果不满足某个条件则抛出异常(从构造函数的主体内)?谢谢。

4

1 回答 1

2

这只是说明允许函数抛出何种异常的一种方式:

Maker::Maker(int x) throw (CycleFoundException)

意味着Maker::Maker(int)只允许抛出CycleFoundException异常,没有别的。这称为“异常规范”。

请注意,C++ 标准已弃用此机制。它不应该再使用了。您可能应该将此告知您的教授;-) 他们总是有问题: http: //mu2e.fnal.gov/public/hep/computing/standards/C++FAQ.shtml#exceptionspec

于 2012-11-11T18:08:36.493 回答