JavaScriptのtry-catchはどこでも書ける?

try-catchの中にfunctionとかが出てきても平気なようだ。

try {
function outer() {
inner();
function inner() {
alert("Hello World");
}
}
outer();
} catch(e) {
alert(e.number + ": " + e.description);
}

みたいなことをしてもパースエラーにならない。これって、JavaでThrowableをcatchするようなことが出来るのではと思った。JavaScriptのコードの最初と最後をtry-catchで囲んでおくだけで、誰にもcatchされなかった居残りエラーを最終的に捕まえることが出来るみたいな。
でも、何か実用的な感じがしないのは、catchのエラーオブジェクトに詳しい情報が入っていないせいかもしれない。

2件のコメント

  1. >誰にもcatchされなかった居残りエラーを最終的に捕まえることが出来る
    window.onerror = function(e){ alert(e); }
    でも同じような事が出来ます!

  2. window.onerrorって記憶にある名前だ!!
    というか、ありがとうございます。
    Javaだと、classの外にtry-catchを書くとかありえないので
    少々、興奮してしまいました。
    window.onerrorはJavaでいうVMのcatchする例外って感じですね。そこを自由に出来るのがJavaScriptらしいですが。

コメントする

メールアドレスが公開されることはありません。