/* =============================================================================
* scpp_exception.hpp
* Copyright (c) 2003 - 2013 Nomura Kei
* LICENSE :
* LGPL (GNU Lesser General General Public License - Version 3,29 June 2007)
* http://www.gnu.org/copyleft/lesser.html
* =============================================================================
*
*
*/
#ifndef SCPP_EXCEPTION_HPP
#define SCPP_EXCEPTION_HPP
#include <exception>
#include <string>
#include <scpp_compiler.hpp>
namespace scpp
{
/**
* 本 libscpp の例外基底クラス.
* libscpp で扱う例外は, 本 Throwable を継承しています.
*/
class Throwable : public std::exception
{
public:
Throwable() throw();
Throwable(const Throwable& t) throw();
Throwable(const std::string& msg) throw();
virtual ~Throwable() throw();
virtual const char* what() const throw();
protected:
std::string message;
};
/**
* 本 libscpp の Exception クラス.
* 本 libscpp にて, 回復可能なエラーは,
* 本クラスを継承したクラスを throw します.
*/
class Exception : public Throwable
{
public:
Exception() throw();
Exception(const Exception& t) throw();
Exception(const std::string& msg) throw();
virtual ~Exception() throw();
};
/**
* 本 libscpp の Error クラス.
* 本 libscpp にて, 回復が困難なエラーは,
* 本クラスを継承したクラスを throw します.
*/
class Error : public Throwable
{
public:
Error() throw();
Error(const Error& t) throw();
Error(const std::string& msg) throw();
virtual ~Error() throw();
};
} // namespace scpp
#endif // SCPP_EXCEPTION_HPP