例外処理

Version 0.76より、例外処理をサポートしました。


例外処理構文

try {
   // 例外が発生する可能性のある文
catch {
   // 例外が発生した場合
finally {
   // 事後処理
}

finallyブロック内に書かれた文は、例外の発生/未発生に関わらず必ず実行されます。
任意の位置で例外を発生させたい場合は、throwが利用できます。
catchブロック内では、例外発生コードが$exceptionに入っています。



# 例外利用の例

 // 例外コードの定義
#define MGSERR_USER     MGSERR_USERDEFINED+1

function exception_test(){
    try {
        // わざと例外を発生させる
        log::write("%d");
    } catch {
        println("例外発生。例外コード[" . $exception . "]");
    } finally {
        println("最終処理。");
    }
    //例外を発生させる
    throw MGSERR_USER;
}

try {
    exception_test();
} catch {
    println("関数の例外発生。例外コード[" . $exception . "]");
} finally {
    println("関数呼出し後最終処理。");
}
println("完了。");