Newer
Older
snipet / libscpp / trunk / src / scpp_exception.cpp
  1. /* =============================================================================
  2. * scpp_exception.cpp
  3. * Copyright (c) 2003 - 2013 Nomura Kei
  4. * LICENSE :
  5. * LGPL (GNU Lesser General General Public License - Version 3,29 June 2007)
  6. * http://www.gnu.org/copyleft/lesser.html
  7. * =============================================================================
  8. *
  9. * Java ライクな Exception を扱うモジュール
  10. *
  11. */
  12. #include <scpp_errno.hpp>
  13. #include <scpp_exception.hpp>
  14.  
  15.  
  16. namespace scpp
  17. {
  18.  
  19.  
  20. ////////////////////////////////////////////////////////////////////////////////
  21. //
  22. // Throwable
  23. //
  24.  
  25. /**
  26. * 最後に発生した errno に対応するメッセージをもつ Throwable を構築します.
  27. * エラーメッセージを取得できない場合, 空文字がメッセージに設定されます.
  28. */
  29. Throwable::Throwable() throw() : message("")
  30. {
  31. int errnum = Errno::getError();
  32. Errno::getErrorMessage(&this->message, errnum);
  33. }
  34.  
  35.  
  36. /**
  37. * コピーコンストラクタ.
  38. *
  39. * @param t コピー元
  40. */
  41. Throwable::Throwable(const Throwable& t) throw() : message(t.message)
  42. {
  43. // NOP
  44. }
  45.  
  46.  
  47. /**
  48. * 指定されたメッセージを持つ Throwable を構築します.
  49. *
  50. * @param msg メッセージ
  51. */
  52. Throwable::Throwable(const std::string& msg) throw() : message(msg)
  53. {
  54. // NOP
  55. }
  56.  
  57.  
  58. /**
  59. * デストラクタ.
  60. */
  61. Throwable::~Throwable() throw()
  62. {
  63. // NOP
  64. }
  65.  
  66.  
  67. /**
  68. * エラーメッセージを返します.
  69. *
  70. * @return エラーメッセージ
  71. */
  72. const char* Throwable::what() const throw()
  73. {
  74. return message.c_str();
  75. }
  76.  
  77.  
  78.  
  79. ////////////////////////////////////////////////////////////////////////////////
  80. //
  81. // Exception
  82. //
  83.  
  84. /**
  85. * 最後に発生した errno に対応するメッセージをもつ Exception を構築します.
  86. * エラーメッセージを取得できない場合, 空文字がメッセージに設定されます.
  87. */
  88. Exception::Exception() throw() : Throwable()
  89. {
  90. }
  91.  
  92.  
  93. /**
  94. * コピーコンストラクタ.
  95. *
  96. * @param t コピー元
  97. */
  98. Exception::Exception(const Exception& t) throw() : Throwable(t)
  99. {
  100. // NOP
  101. }
  102.  
  103.  
  104. /**
  105. * 指定されたメッセージを持つ Exception を構築します.
  106. *
  107. * @param msg メッセージ
  108. */
  109. Exception::Exception(const std::string& msg) throw() : Throwable(msg)
  110. {
  111. // NOP
  112. }
  113.  
  114.  
  115. /**
  116. * デストラクタ.
  117. */
  118. Exception::~Exception() throw()
  119. {
  120. // NOP
  121. }
  122.  
  123.  
  124.  
  125. ////////////////////////////////////////////////////////////////////////////////
  126. //
  127. // Error
  128. //
  129.  
  130. /**
  131. * 最後に発生した errno に対応するメッセージをもつ Exception を構築します.
  132. * エラーメッセージを取得できない場合, 空文字がメッセージに設定されます.
  133. */
  134. Error::Error() throw() : Throwable()
  135. {
  136. // NOP
  137. }
  138.  
  139.  
  140. /**
  141. * コピーコンストラクタ.
  142. *
  143. * @param t コピー元
  144. */
  145. Error::Error(const Error& t) throw() : Throwable(t)
  146. {
  147. // NOP
  148. }
  149.  
  150.  
  151. /**
  152. * 指定されたメッセージを持つ Exception を構築します.
  153. *
  154. * @param msg メッセージ
  155. */
  156. Error::Error(const std::string& msg) throw() : Throwable(msg)
  157. {
  158. // NOP
  159. }
  160.  
  161.  
  162. /**
  163. * デストラクタ.
  164. */
  165. Error::~Error() throw()
  166. {
  167. // NOP
  168. }
  169.  
  170.  
  171.  
  172. } // namespace scpp
  173.