我们的教授给了我们一个 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;
}
我从未见过这样的构造函数声明。为什么将“throw (CycleFoundException)”标记到构造函数的声明中?有必要吗?
对于这种格式,我该如何抛出异常?我是否仍会以与其他方式相同的方式来做,也就是如果不满足特定条件则抛出异常(从构造函数的主体内)?谢谢。
最佳答案
这只是说明允许函数抛出哪种异常的一种方式:
Maker::Maker(int x) throw (CycleFoundException)
意味着 Maker::Maker(int)
只允许抛出 CycleFoundException
异常,没有别的。这称为“异常规范”。
请注意,C++ 标准已弃用此机制。它不应该再使用了。你应该通知你的教授 ;-) 他们总是有问题:http://mu2e.fnal.gov/public/hep/computing/standards/C++FAQ.shtml#exceptionspec
关于c++ - 从构造函数中抛出异常的奇怪格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13333800/