私はかなり厄介な問題に遭遇しました。関数内からスローされたエラーをキャッチできません。正直なところ、JavaScript オブジェクト内からのエラーのスローにも同じことが当てはまるという事実は、それほど気にしません。
サンプルコードは次のとおりです。
http://jsfiddle.net/TxsHK/1/ (このコードをテストするには、firebug コンソールが必要です)
function ViewError($CONTENT){
this.content = $CONTENT;
return this.content;
};
try{
$(document).ready(function() {
//--------------
throw ViewError('Test error');
//--------------
});//$(document).ready(function() {
}catch (e) {
if (e instanceof ViewError) {
console.info(e.message);
}
else{
console.warn(e.message);
}
}
エラーを与える
TypeError: e is undefined
なんで?関数 (またはオブジェクト) によってスローされるエラーは、完全にキャッチできる必要があります。それが try - catch ブロックの全体的な目的です: 関数から例外をキャッチすることです。少なくとも...他の言語ではそうです。
誰が何が起こっているのか説明できますか?また、関数/オブジェクト内から例外をキャッチするにはどうすればよいですか?