ホーム > デベロッパ > SophiaFramework > BREW C++ 逆引きコード集

BREW C++ プログラミング : SophiaFramework 逆引き FAQ・コード集

例外処理を記述する(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