こんな場合はこの記事を見てね!
そのものずばり!の内容じゃなくてもヒントになるはずです♪
ファイルをアップロードしようと思ったら「アクセスが拒否されました」
ウインドウをリサイズ、移動しようとしたら「アクセスが拒否されました」
form部品の初期値を取得したい、初期値に戻したい
form部品すべてにアクセスしたい
配列の値を削除したい
配列の値を並び替えたい
javascriptでtry-catch!
IEでclass名を取得したい
IEでonclick属性をセットしたい

2006年10月19日

Javascriptでtry-catchを使う

Javascriptでtry-catch構文が使えるって知らない人が多かったので書いてみました。
(最近じゃAjaxでほぼ必須だから認知度高いかもしれないけど。)

try{エラーをキャッチしたい処理内容}catch(e){エラーをキャッチしたら行う処理内容}


プログラミング言語に慣れている方はすんなり受け入れられると思いますが、どんなプログラムでもこの例外処理が大変重要です。
Javascriptではそんなに厳しく例外処理をする必要ないかもしれないけど、使ったら便利ってことがよくあります。
それは、ブラウザが返却するエラーをキャッチすることです。

IEではよくあるのですが、windowのリサイズや移動、またはファイルのアップロード時など、セキュリティ上の都合で、ブラウザからエラーが返されてしまいます。
そうするとその後の一切の処理ができなくなり大変都合が悪いです。
なので、このブラウザから返されるエラーをキャッチし、つぶすなり、他の処理に置き換えるなりする必要があります。

例:windowのリサイズや移動を行う。
リサイズ時にユーザーがウインドウを触ったりすると
「アクセスが拒否されました」のアラートが上がることがあります。
エラーの詳細はMicrosoftサポート情報
これは特に重要なエラーではないので、潰したいという場合。

try{
  window.top.resizeTo(w,h);
  window.top.moveTo(x,y);
}catch(e){
  //アクセスが拒否されましたのエラーが出たら何もしない。
  if(e.number == 2147024891){
    throw e;
  }
}
再度リサイズや移動を行うにはそれなりの処理が必要です。
アクセスが拒否されましたのエラーナンバーは上記の通りなので、
これ以外のエラーだった場合はエラーが返されますので安心です。
(全てを潰すのはセキュリティ上よくない。)

このほか、ファイルのアップロードしたいときに、
相対パスや存在しないようなファイル名を入力してsubmitすると、無反応だったり「アクセスが拒否されました」となりその後の処理が不可能になることがあります。
詳細はMicrosoftサポート情報

エラー自体はセキュリティ上しょうがないとしても、リカバリできないのは困ります。
なのでこれもエラーをキャッチし、自分でエラーを返すことで処理の続行が可能となります。

try{
  document.myform.submit();
} catch (e) {
  alert('存在しないファイルが指定されました。');
}

他にもデバッグ代わりにつかったり、知っておくと便利なtry-catchでした。



ちょっと使えるぞ♪と思ったらクリックして頂くと励みになります。ビジネスブログ100選
posted by junko at 10:37 | Comment(10) | TrackBack(0) | 例外処理