JavaScript

throw 文

 編集:2022.08.23 by T.A.

ユーザー定義の例外を発生させます。

throw
任意の式を指定します。

以下のいずれもが例外を発生させます:

throw 'Error2'; // 文字列値である例外を生成します
throw 42;       // 値 42 である例外を生成します
throw true;     // 値 true である例外を生成します
throw new Error('Required');  // Required というメッセージを持ったエラーオブジェクトを生成します

また、throw 文は throw キーワードと式の間に改行が許されていないため、自動セミコロン挿入(ASI)の影響を受けます。

オブジェクトで例外を発生させる
例外を派生させるときにオブジェクトを指定することができます。そうすれば、catch ブロックの中でそのオブジェクトのプロパティを参照できます。次の例は、UserException 型のオブジェクトを生成し、それを throw 文の中で使っています:

function UserException(message) {
   this.message = message;
   this.name = 'UserException';
}
function getMonthName(mo) {
   mo = mo-1; // 配列の添字のために月の数を調整する (1 = Jan, 12 = Dec)
   var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',
      'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
   if (months[mo] !== undefined) {
      return months[mo];
   } else {
      throw new UserException('InvalidMonthNo');
   }
}

try {
   // 試みる文
   var myMonth = 15; // 15 は範囲外であり、例外が発生する
   var monthName = getMonthName(myMonth);
} catch (e) {
   monthName = 'unknown';
   alert(e.message + ":" + e.name); // エラーハンドラーに例外オブジェクトを渡す
}
try{
  throw "10ああ";
}catch(e){
  alert(e);
}
D=e; //エラー発生する。e は catch ブロックの中だけで有効。

テスト