SophiaFramework UNIVERSE 5.3 |
エラー処理は、標準 C++ 言語の例外構文に似た「擬似 catch-throw 構文」を使います。
エラー値の型は SFCErrorです。
表 6.4. エラー処理の関数
関数 | 意味 |
---|---|
static_catch | エラーを取得します。 |
static_try | エラーが発生したかどうかを取得します。 |
static_throw | エラーを設定します。 |
static_throws マクロ | |
---|---|
メンバ関数宣言の最後に記述される static_throws マクロ は、 開発者にその関数はエラーを搬出する可能性があることを明示するためのものです。 static_throws マクロはコンパイル時に削除されますので、省略しても実行時に影響はおよびません。 Visual C++ 6.0 では、このマクロを使うと ClassView にクラスリストが表示されない現象が発生する可能性があります。 このとき、ClassView にクラスリストを表示するには、このマクロを削除するか、あるいはヘッダファイルの先頭の方で #define 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: // エラーが発生していない ... } ... }
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |