前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0

6.3. エラー処理

エラー処理は、標準 C++ 言語の構文と親和性の高い「擬似 catch-throw 構文」を使います。

エラー値の型は エラー型です。

表 6.4. エラー処理の関数

関数 意味
static_catch エラーを取得します。
static_try エラーが発生したかどうかを取得します。
static_throw エラーを設定します。
static_throws 関数がエラーを投げることを示します。

例 6.1. エラー処理

class MyApp : public SFCApplication {
  public:
    Void SubFunc(Void) static_throws;       // SubFunc は static_throws によりエラーを投げる
                                            
    Void MainFunc(Void);
    ...
};

Void SubFunc(Void) static_throws            // SubFunc は static_throws によりエラーを投げる
                                            
{
    if (static_try()) {                     // 現在のエラーの有無をチェックする
        
        // エラーは発生していない
        // オブジェクトを生成する
        XXXObjectPtr object = new XXXObject();
        if (object == null) {               // オブジェクトの生成に失敗したとき

            static_throw(SFERR_NO_MEMORY);  // メモリ不足エラー ( SFERR_NO_MEMORY ) を投げる

            return;                         // static_throw は自動的に return しないので必要
        }
    }
    ...
}

Void MainFunc(Void)
{
    ...
    SubFunc();
    switch (static_catch()) {
        // エラーに応じた処理
        case SFERR_NO_MEMORY:               // メモリ不足
            ...
        case SFERR_NO_ERROR:                // エラーが発生していない
            ...
    }
    ...
}