JavaScript, Neo-Generation
Written 5/28/00
5. 新しい構文
switch JavaScript 1.2 JScript 3
C の switchcase 構文が使えるようになりました。
  var str;
  for(var i = 1; i <= 5; i++) {
      switch(i) {
      case 1:
          str = "(" + i + ",";
          break;
      case 5:
          str += i + ")";
          break;
      default:
          str += i + ",";
      }
  }
  alert(str);           //(1,2,3,4,5)
 
i が1のとき case 1: 以下、5のとき case 2: 以下、 それ以外のとき default: 以下を実行します。

実は分岐を判定するラベルは整数だけでなく文字列でもなんでも使えます。

  var aryjweek = ["日", "月", "火", "水", "木", "金", "土"];
  var jweek = aryjweek[(new Date()).getDay()];
  var name = "さくら";
  switch(name) {
  case "さくら":
      alert("今日は" + jweek + "曜日だよ");
      break;
  case "ともよ":
      alert("今日は" + jweek + "曜日ですわ");
      break;
  default:
      alert("今日は" + jweek + "曜日やでー");
  }
 
try 〜 catch JScript 5
例外が発生したときにそれを捕まえて処理することができます。
  var x = 0;
  try {
      alert(x.x.x);
  }
  catch(e) {
      alert(e.number & 0xffff);      //5007
      alert(e.description);          //'x.x'はオブジェクトではありません。
  }
 
本来は alert(x.x.x); のところで 『'x.x'はオブジェクトではありません。』 といったエラーメッセージが出てそこでプログラムが止まってしまいますが、 trycatch を使うと try {…} の中でエラーが出た場合、 catch に飛びます。 エラーが出なかった場合は catch 以下は無視されます。
catch の引数はエラーオブジェクトで、 エラーの内容を表しています。 number プロパティはエラーナンバーを表していて、 エラーの種類を識別できます。 description プロパティはエラーメッセージです。
エラーオブジェクトは次のように作成できます。
  e = new Error(number, description);
 
throw JScript 5
throw ステートメントで例外を発生させることができます。
  var x = 0;
  var y;
  if(x == 0)
      throw new Error(0, "division by zero");
  y = 1 / x;
  alert(y);
 
throw ステートメントでプログラムが止まります。

これをさきほどと同じように捕まえることができます。

  var x = 0;
  var y;
  try {
      if(x == 0)
          throw new Error(0, "division by zero");
      y = 1 / x;
      alert(y);
  }
  catch(e) {
      alert(e.description);
  }
 
Back