/* ============================================================================= * scpp_exception.cpp * Copyright (c) 2003 - 2013 Nomura Kei * ============================================================================= */ #include <sc_errno.h> #include <scpp_exception.hpp> #ifndef MAXMSG #define MAXMSG (512) #endif namespace scpp { //////////////////////////////////////////////////////////////////////////////// // // Throwable // /** * 最後に発生した errno に対応するメッセージをもつ Throwable を構築します. * エラーメッセージを取得できない場合, 空文字がメッセージに設定されます. */ Throwable::Throwable() NO_THROW() : message("") { char buf[MAXMSG]; int errnum = getError(); int ret = getErrorMessage(errnum, buf, sizeof(buf)); if (ret) { this->message = buf; } } /** * コピーコンストラクタ. * * @param t コピー元 */ Throwable::Throwable(const Throwable& t) NO_THROW() : message(t.message) { // NOP } /** * 指定されたメッセージを持つ Throwable を構築します. * * @param msg メッセージ */ Throwable::Throwable(const std::string& msg) NO_THROW() : message(msg) { // NOP } /** * デストラクタ. */ Throwable::~Throwable() NO_THROW() { // NOP } /** * エラーメッセージを返します. * * @return エラーメッセージ */ const char* Throwable::what() const NO_THROW() { return message.c_str(); } //////////////////////////////////////////////////////////////////////////////// // // Exception // /** * 最後に発生した errno に対応するメッセージをもつ Exception を構築します. * エラーメッセージを取得できない場合, 空文字がメッセージに設定されます. */ Exception::Exception() NO_THROW() : Throwable() { } /** * コピーコンストラクタ. * * @param t コピー元 */ Exception::Exception(const Exception& t) NO_THROW() : Throwable(t) { // NOP } /** * 指定されたメッセージを持つ Exception を構築します. * * @param msg メッセージ */ Exception::Exception(const std::string& msg) NO_THROW() : Throwable(msg) { // NOP } /** * デストラクタ. */ Exception::~Exception() NO_THROW() { // NOP } //////////////////////////////////////////////////////////////////////////////// // // Error // /** * 最後に発生した errno に対応するメッセージをもつ Exception を構築します. * エラーメッセージを取得できない場合, 空文字がメッセージに設定されます. */ Error::Error() NO_THROW() : Throwable() { // NOP } /** * コピーコンストラクタ. * * @param t コピー元 */ Error::Error(const Error& t) NO_THROW() : Throwable(t) { // NOP } /** * 指定されたメッセージを持つ Exception を構築します. * * @param msg メッセージ */ Error::Error(const std::string& msg) NO_THROW() : Throwable(msg) { // NOP } /** * デストラクタ. */ Error::~Error() NO_THROW() { // NOP } } // namespace scpp