JavaScriptのtry{ }catch( ){ }命令

カテゴリ: コンピュータ / 公開日: 2007年8月19日(日曜)06:01 / 投稿者: Tom Goodsun
Ajax構文ではよく使われるtry...catch命令。これを調べなくしてどうする! ということで調べて、自分なりの解釈をつけてみました。 もともと簡素なつくりであったJavaScriptに、高度なシステム構築にも対応できるように実装された仕様、とも言いましょうか。高級言語であり、オブジェクト指向の代名詞でもあるJAVA言語にはすでに実装されていました。その考え方は「例外処理」です。

どういうことかというと、プログラムの世界では正規の手順で処理していき、やがて正しい実行結果が得られるというのが普通なんですが、ユーザーの操作ミス、またはハード面での何らかのエラーにより、正規の手順で処理が実行していかないときがあります。いわゆるエラーのことを例外といい、エラーが発生したときに実行する処理を「例外処理」といいます。

論理式(結果がTRUE(成立)かFALSE(否成立)になる式)を利用するIF文と違い、直接処理を書き、エラーの時の処理を書きます。ですので、IF文とは違う動きをすることに気をつけてください。

Ajax構文では非同期通信のXMLHttpの処理のときによく使われます。
次の構文は、例としては非常に難解ですが、次のことをしています。
function createXMLHttpRequest() {
var XMLhttpObject = null;
try {
XMLhttpObject = new XMLHttpRequest();
} catch(e) {
try {
XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return null;
}
}
}
return XMLhttpObject;
}

XMLHttpRequestを作成します。
XMLhttpObjectにnullを代入します。
XMLhttpObjectに新しいオブジェクトXMLHttpRequest()を作成します。
上記にエラーが発生したした場合
  XMLhttpObjectに新しいオブジェクトActiveXObject("Msxml2.XMLHTTP")を作成します。
  上記にエラーが発生した場合
    XMLhttpObjectに新しいオブジェクトActiveXObject("Microsoft.XMLHTTP")を作成します。
    上記にエラーが発生した場合、nullにします。
XMLhttpObjectを返します。

気になっているとは思いますが、catch(e)のeは例外処理時の変数だそうです。つまりエラーの内容がeという変数に返されるわけです。