CRSプログラミング

Q1
例外処理の記述方法
[内容]
例外が発生した時にハンドリングしたい

A1
[解決方法]
try…catchにより例外をハンドリングすることができます。

try {
    実行文1
}
catch( e ) {
    実行文2
}

1. tryブロックで囲まれた実行文1を実行します。
2. 実行過程で例外が発生した場合、ステートメント実行を中止し、実行文2に制御を移します。

catchステートメントの仮引数 e には、Exceptionオブジェクトが渡されます。Exceptionオブジェクトのプロパティによりどのような例外が発生したか知ることができます。

e.message エラーメッセージ
e.method 例外を起こした機能分類
e.code 例外コード


[サンプルコード]

try {
    /*実行文を記入*/
    Get("Dialog1.crs");
}
catch( e ) {
    /*例外が発生した場合の処理を記入*/
    print(e.message);
}
【注意】
try … catch による例外ハンドリングは実行時のみ有効です。
下記の例では、Form全体をtryブロックに入れていますが、このtryブロック はFormの生成時に発生する例外は捕捉されますが、Formの生成が終わるとtryブロックを抜けてしまうため、OnTouchイベントハンドラ内で発生する例外は捕らえることはできません。
Form Form1 {
    /*tryブロック開始*/
    try { 
        Form Form2 {
            width = 100;
            height = 100;
            Function OnTouch(e) {
                throw new Exception("app",1,"test");
            }
        }
    /*tryブロック終了*/
    }
    catch(e) {
        print(e.message);
    }
}

OnTouchで発生する例外を捕らえるためには次のように記述します。

Form Form1 {
    width = 100;
    height = 100;
    Function OnTouch(e) {
        /*tryブロック開始*/
        try {
                :
            throw new Exception("app",1,"test");
        /*tryブロック終了*/
        } 
        catch(e) {
            print(e.message);
        }
    }
}
なお、try … catchは最上位には記述できません。

管理番号:CRSM_001
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser Mobile・Biz/Designer Mobile TIPS集 トップへ