例外処理を記述する(static_exception クラスの利用)
BREW 環境では C++ 言語の例外を利用することができず、
コンストラクタ内部のエラーや演算子内部のエラーを外部で検知することができません。
SophiaFramework では static_exception クラスを利用して、統一的なエラー処理を行います。
static_exception クラスは、継承して使用します。
SFMTYPEDEFCLASS(myclass) class myclass : public static_exception{ public: explicit myclass(Void) static_throws; // static_throws キーワードは // この関数(コンストラクタ)の中でエラーが起こるかもしれないと // いうことを示す目印(実際には何もしない) private: SFCError Function(Void); // エラー値を返す関数 }; myclass::myclass(Void) { // 親クラスでエラーが発生してないかチェック if (static_try()) { // Function() 関数の戻り値(エラー値)を設定 static_throw(Function()); // エラーが発生していないかチェック if (static_try()) { ... } } return; }
このクラスの使い方
myclass my; // コンストラクタの中でエラーが起きているかもしれないので… // エラーが起きているかを調べる if (my.static_catch() == SFERR_NO_ERROR) { // エラーは起きていない ... } else { // エラーが起きている // my.static_catch() の戻り値でエラーの種類を知ることができる }
参照 static_exception | static_exception::static_try | static_exception::static_throw
static_exception::static_catch