// invaild_argument
#include <stdexcept>
#include <iostream>
#define TOSTRING(x) TTOSTRING(x)
#define TTOSTRING(x) #x
using namespace std;
class ErrMsg
{
public:
ErrMsg(const char* _file, const char* _line, const char* _func): file(_file), line(_line), func(_func) {}
ErrMsg() {}
~ErrMsg() {}
string getFile() const
{
return file;
}
string getLine() const
{
return line;
}
string getFunc() const
{
return func;
}
string getAll() const
{
string ret;
ret += "error:\nFILE: ";
ret += getFile();
ret += "\nLINE: ";
ret += getLine();
ret += "\nFUNC: ";
ret += getFunc();
return ret;
}
private:
const char* file;
const char* line;
const char* func;
};
class Text
{
public:
Text()
{
ErrMsg err(__FILE__, TOSTRING(__LINE__), __FUNCTION__);
throw invalid_argument(err.getAll());
}
};
int main()
{
try
{
// Text p(); 为声明函数
// Text p; 才是无参构造函数, 每次都搞错.....
Text p;
}
catch (invalid_argument & ia)
{
cerr << ia.what() << endl;
}
return 0;
}
还是附上invaild_argument的简单例子吧....
最新推荐文章于 2023-02-16 00:48:07 发布