メインページ   名前空間一覧   クラス階層   アルファベット順一覧   構成   ファイル一覧   名前空間メンバ   構成メンバ   ファイルメンバ  

CppAssert.h の解説

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

Included by dependency graph

名前空間

namespace  KSCL

マクロ定義

#define KSCL_ASSERT_EXCP(exp)   (void)( (exp) || (KSCL::AssertExcp(#exp, __FILE__, __LINE__), 0) )
 ・例外を投げる assert です。. より詳しく...

#define KSCL_ASSERT_EXCP_MSG(exp, msg)   (void)( (exp) || (KSCL::AssertExcp(#exp, __FILE__, __LINE__, msg), 0) )
 ・KSCL_ASSERT_EXCP() に「メッセージ」を加えたものです。. より詳しく...


解説

assert 関係のクラスが入ってるヘッダーファイルです。


マクロ定義の解説

#define KSCL_ASSERT_EXCP exp       (void)( (exp) || (KSCL::AssertExcp(#exp, __FILE__, __LINE__), 0) )
 

・例外を投げる assert です。.

 ASSERT のように判定して例外を投げます。
 C ランタイムの assert() や MFC の ASSERT() はプログラムを止めてダイアログを表示しますが、 それだと CppUnit を使用している時などには不便です。また、これらによって abort() してしまった場合には デストラクタが呼ばれないため、グローバルリソース系を解放しないという問題点が発生します。
 この AssertExcp() では、 KSCL::CAssertionError を例外として投げることでこれらの問題を解決します。
 KSCL::CAssertionError は std::login_error から継承しているクラスです。この例外を catch してください。

	KSCL_ASSERT_EXCP( bError );
		
 というおなじみの形式で使用してください。
 assert の性質上、 catch 後に「何くわぬ顔で処理をそのまま進める」ということはしないでください。 また、そういうことが可能なエラー処理に KSCL_ASSERT_EXCP() を使用しないでください。
 例外を投げることや、その例外のクラス名が KSCL::CAssertionError であることから判るように、この機能は Java の例外処理を強く意識していますので、興味があれば Java2 SDK のドキュメントもご覧ください。

#define KSCL_ASSERT_EXCP_MSG exp,
msg       (void)( (exp) || (KSCL::AssertExcp(#exp, __FILE__, __LINE__, msg), 0) )
 

・KSCL_ASSERT_EXCP() に「メッセージ」を加えたものです。.

 KSCL_ASSERT_EXCP() とほぼ同じですが、エラーメッセージを加えて出力できるようにしています。
 このあたりは Java の assert を強く意識しています。


KSCL(KAB-studioClassLibrary)に対してThu Jun 12 09:54:17 2003に生成されました。 doxygen1.2.15