Javascriptのエラートラップ(Error Handling)

こんばんわ。
ひさしぶりに爆睡のお爺さんです。
土日はゆっくり休めるぜーと言いつつ、コリコリJavascriptなんかいじっていたりするわけですが。
で、お題はJavascriptのエラートラップ方法です。

エラートラップというのは重要ですね。商用サービスなんかしていると、文法エラーが起こった時に、Javascriptのエラー画面なんか出したら失格でありますから。
といいつつ、昔のプログラムにはそういう状態のが多々あるわけですが。

それを避けるためにどうすればいいのか。ずばり言うと、最速インタフェース研究会さんのJavaScript::DebugScreenやFireBugsを解析していただいた方が、何ぼかわかりやすい。
と言っては身も蓋もありません。

最速インタフェース研究会さんのJavaScript::DebugScreen
 http://la.ma.la/misc/js/debugscreen/

それで若干解説しますと、window.onerrorを使用します。

 window.onerrorの解説
  http://www.openspc2.org/JavaScript/ref/window/onerror.htm
  http://www.microsoft.com/japan/msdn/columns/dude/dude1001.aspx

超簡単な例は次のようになります。

window.onerror = function (mes,file,num){
alert(mes+":"+file+":"+num);
return true;
};

alet();


これは、alet()のところでエラーがでますが、エラーのイベントは上のonerror関数に横取りされます。
で、このonerror関数の中でエラーが発生するとどうなるかというと、本当のエラー画面が表示されます。IEとFFで試しましたが、無限に関数が呼び出される、という事はありませんでした。

それで、返却値ですが、return true;としておくと、ブラウザのエラー画面が出ません。falseにしておくと、ブラウザのエラー画面が発生します。

さて、エラー関数が終了したらどうなるか。
これはそこでスクリプトが停止してしまいます。
割り込みが終わったんだから復帰ーとしたい所ですがムリなようです。




しかし、document.fileModifiedDateなんざで、ブラウザ判定していてはダメですね。
CGIから出力しているページで上記変数でブラウザ判定していると、時々エラーです。これを突き止めるのに、100回以上テストせにゃならんて大変でした。

参考
 http://www9.plala.or.jp/oyoyon/html/script/browser.html

追記
 よく考えたら、try{} catch(e) {}でも可能ですな。大ボケです(^-^;)

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック