最近有些懈怠,很碎的内容网上到处可见,这里权当做个纪念,后续的开发碰到要封装std::runtime_error场景,这些拿起来就可用。
个人思考问题总是断根弦,那就是特别不喜欢在已经很确定随时随地可以拷贝自由使用的组件上费心费力。
但是解决具体问题的时候,除了抽象一点的思考,很大部分时间都费在了这些很具体又很有用的小实现上,想要做一位稍稍高效的码农,这些已经证明符合商业规范的小组件要日积月累,拿起来就可用。
/** @file include/Exception.hpp */
#ifndef YOUR_OWN_EXCEPTION_HPP_
#define YOUR_OWN_EXCEPTION_HPP_
#include <string>
#include <stdexcept>
namespace your_own_exception
{
class Exception : public std::runtime_error
{
public:
explicit Exception(const std::string &msg) : std::runtime_error(msg)
{
}
explicit Exception(const char *msg) : std::runtime_error(msg)
{
}
virtual ~Exception() = default;
Exception() = delete;
};
class ConcreteError_1 : public Exception
{
public:
explicit ConcreteError_1(const std::string &msg) : Exception(msg)
{
}
};
class ConcreteError_2 : public Exception
{
public:
explicit ConcreteError_2(const std::string &msg) : Exception(msg)
{
}
};
class ConcreteError_3 : public Exception
{
public:
explicit ConcreteError_3(const std::string &msg) : Exception(msg)
{
}
};
class ConcreteError_4 : public Exception
{
public:
explicit ConcreteError_4(const std::string &msg) : Exception(msg)
{
}
};
class ConcreteError_5 : public Exception
{
public:
explicit ConcreteError_5(const std::string &msg) : Exception(msg)
{
}
};
class ConcreteError_6 : public Exception
{
public:
explicit ConcreteError_6(const std::string &msg) : Exception(msg)
{
}
};
} // namespace your_own_exception
#endif // YOUR_OWN_EXCEPTION_HPP_