無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

try .. catch

try .. catch で例外を捕捉します。

  • throwで例外をスローし、メソッドを脱出します。try .. catchでそれを捕捉します。
  • throwの引数には任意のオブジェクトを指定できます。
  • catchの引数として、スローされたオブジェクトが渡されます。
var stdout = document.getElementById("stdout");

// 例外を使う
try {
    throw "test"; // throwで例外をスロー。javaと違って引数として任意のオブジェクトを指定できる。
    stdout.innerHTML += "fail"; // ここにはこない。
} catch ( arg ) { // catch で例外を補足する。 引数でスローしたオブジェクトが渡される。
    stdout.innerHTML += typeof arg + ":" + arg + "<br/>";
} finally {
    stdout.innerHTML += "fainally<br/>"; // 例外発生の有無にかかわらず必ず実行される。
}

実行結果の確認はこちらから。


参考:Core JavaScript 1.5 Guide:Exception Handling Statements

↑を見るとcatchに条件文を書くことで、実行するcatchブロックを振り分けることができるとなっていますが、IE6では動作しませんでした。(Firefox2では動く)

// catch での条件指定
// 引数に続けて条件を記載することで、実行するcatchブロックを振り分けることができる。
try {
    throw "test"; 
    stdout.innerHTML += "fail"; 
} catch ( e if e == "foo" ) { 
    stdout.innerHTML += "foo :" + e + "<br/>"; // パラメータが条件にマッチしないので実行されない。
} catch ( e if e == "test" ) { 
    stdout.innerHTML += "test-1:" + e + "<br/>"; // 条件にマッチするので実行される。
} catch ( e if e == "test" ) { 
    stdout.innerHTML +=  "test-2:" + e + "<br/>"; // 上の条件にマッチして処理されるため、こちらは実行されない。
} 

確認はこちらから。