我正在阅读一本 C++ 书中的示例。并且不明白某个案例。
main.cpp 包含 stdexcept.h 以使用运行时异常。并且还包括 ErrorHandlingModule.h。
ErrorHandlingModule.h 已经包含 stdexcept.h,因为它在函数原型中具有运行时错误参数。
这本书说我必须在 main.cpp 中也包含 stdexcept.h。在本书的源代码中也是这样写的。
当我从 main.cpp 中删除 sdtexcept.h 时,编译通过就好了,程序仍然可以正常工作。
但是为什么书上这么说呢?
感谢您的任何回答。
主.CPP:
#include <iostream>
#include <stdexcept>
#include "ErrorHandlingModule.h"
#include "Prompt.h"
// ....
int main(int argc, char* argv[])
{
SAMSErrorHandlingModule::initialize();
do
{
try
{
char Operator = getOperator();
float Operand = getOperand();
cout << Accumulate( Operator, Operand ) << endl;
}
catch( runtime_error RuntimeError )
{
SAMSErrorHandlingModule::handleRuntimeError(RuntimeError);
}
catch(...)
{
SAMSErrorHandlingModule::handleNotaNumberError();
};
}while (SAMSPrompt::UserWantsToContinueYorN("More?"));
return 0;
}
错误处理模块.H
#include <stdexcept>
#ifndef _ERROR_HANDLING_MODULE_H
#define _ERROR_HANDLING_MODULE_H
namespace SAMSErrorHandlingModule
{
using namespace std;
void initialize( void );
int handleNotaNumberError( void );
int handleRuntimeError( runtime_error theRuntimeError );
}
#endif // _ERROR_HANDLING_MODULE_H