→
ユーザー定義の例外を発生させます。
| 式 | 任意の式を指定します。 |
|---|
以下のいずれもが例外を発生させます:
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 ブロックの中だけで有効。