- /* =============================================================================
- * 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