3

JavaScript の例外処理メカニズムを使用して、RangeError、ReferenceError、TypeError などのエラーをキャッチしようとした人はいますか?

たとえば、RangeError の場合:

try {
var anArray = new Array(-1); 
// an array length must be positive

         throw new RangeError("must be positive!")
}
catch (error) {  
         alert(error.message);
         alert(error.name);
}
finally {
         alert("ok, all is done!");
}

上記の場合、新しい RangeError オブジェクトをスローしていますか?

私のコード例 alert(error.message) には、「ポジティブでなければならない」というユーザー定義のメッセージが表示されません。

自分の RangeError オブジェクト (および ReferenceError、TypeError ) をスローするにはどうすればよいですか?

一番。

4

2 に答える 2

2

実際、ここでは配列は本質的にハッシュ テーブルであるため、JavaScript の配列インデックスは正である必要はありません。配列内の存在しないキーにアクセスしようとすると、結果は単に になりますundefined

単純な条件でそれをキャッチできます。

if (typeof someArray[foo] !== "undefined") {
    //do stuff
} else {
    //do error handling
    //Here I'm just throwing a simple exception with nothing than a message in it.
    throw new Error('something bad happened');
}

ただし、「TypeError」の意味がわかりません。詳細を教えてください。

于 2010-07-23T08:50:31.987 に答える
2

これはほぼ1歳ですが、遅くなった方が良いと思います。ブラウザによって異なりますが、場合によっては (FIREfox)、RangeError は独自のメッセージ プロパティを提供する代わりに、エラー オブジェクトのメッセージ プロパティを継承します。残念ながら、唯一の回避策は thrownew Error("must be positive!")です。ごめん。

于 2011-06-15T17:25:40.883 に答える