重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

javascriptの例外処理をwikibooks*1で勉強しているときに、
catch(e){}というものを見つけました。

このeは普通の変数、または普通のオブジェクトなのでしょうか?
まだ初学者なので、想像で語ることになりますが、
例えば、ウェブページにユーザー登録のフォームを作成するとき、ユーザー名のルールとして、
「頭文字は数字じゃダメ」と、javascriptで設定し、
ルールに反する値(=例外)、ここでは11と仮定し、
それが入力されたときに、その例外の値をeとして、catch(eという変数の値を、11にする)し、
それを後ほど、alert(e + " はダメです。ルールを読んでください")のようにするのでしょうか?


*1
wikibooks
http://ja.wikibooks.org/wiki/JavaScript_try-catc …

A 回答 (2件)

JavaScript において例外とは、通常ルートでは考慮されない状況が発生したことを、任意の値を「投げる」ことによって、制御構造を無視してお知らせする機能です。



一般的な用途としては、
・プログラムの文法が間違っている (コンパイル型なら発生しない状況)
・関数の引数が間違っている (静的型付けなら発生しない状況)
・機械が故障した (普通は考慮しない状況)
・通信が強制的に遮断された (業務的に意識したくない状況)
等の状況が発生した際に、
その状況を説明した Error オブジェクトを投げることにより通常ルートを中断し、
専用の例外ルートにて例外処理を行います。

ただ Error オブジェクトでなければいけない決まりはないので、
 try {
  if(isNG()) throw "NG"; // 例外を説明する string を投げる
  alert('正常');
 } catch (e) {
  alert(e+'でした'); // 例外の説明を元に、例外処理として 'NGでした' を表示
 }
の様に実装するこのも可能ですが、
投げる箇所と例外処理の箇所は、別な人が実装することが多いので、
混乱しないように Error オブジェクトを投げるのが良いでしょう。

ところで、ユーザー名の検証などは一般的に通常ルート(業務処理)とされます。
例外処理とはあくまでも例外的な状況を処理する為に使うべきなので、
通常ルートを例外処理で実装するのは、あまり好ましくない行為です。

ですが、通常ルートをすっ飛ばすという機能性に着目して、
あえて例外処理で実現するケースも、あることはあります。

まとめると、
「例外を使えば通常処理が簡潔になるなら、使ってもよい、かもしれない、気がする」
    • good
    • 0

ちょっと質問の意味がわからないのですが、eにどんな情報が入ってくるのかを知りたいのでしょうか。

もしくは、catchの使い方を知りたいのでしょうか。

ちなみに、eの中身を知りたいなら、console.log(e)で見ることができますよ。console.logの結果は、ブラウザのコンソールから確認できます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!