サイテック株式会社 > 【連載】新人女子プログラマーの技術修行日記 - 第3回 Javascript編③ ―例外処理― ,

エンジニア募集中!

サイテック株式会社で、根っからの技術者である社長や、大手IT企業から転職してきた仲間たちと議論しながら、社会をもっと豊かに、幸せにするアプリケーションを作ってみませんか?

  • Webアプリケーションエンジニア
  • エンジニア実習生

詳細はこちら

2009年03月06日 17:21

新人女子プログラマーの技術修行日記
第3回 Javascript編③ ―例外処理― , * * * *

by ゆきんこ

Tags: RIA・リッチクライアント JavaScript 例外処理 開発 Ajax

今回はなかなか理解できないtry~catchについて


考え方としては、tryの中で発生したエラーを catch して、適当に処理するということ。

tryは「試す」、catchは「捕まえる」ですね。

使い方は、

    try{

        //エラーが起こりそうな処理

    }catch(e){
        //eは識別子
        //エラーが出たときの処理

    }

のような感じ。


これを使えば、エラーが見つけづらいjavascriptでのデバッグが楽になるかも!?

と、思ったのですが、

例えば、全ての処理をtryで囲んだ場合、catchでエラーが捕まえられても

一体どこでエラーになったのか全くわかりません。

さらに処理を止めたくないからと、catchで何の処理もしないようにしたら・・

エラーが起きているのるか起きてないかもわからなくなり、

プログラムの潜在的バグになってしまう(ToT)

catchでどう処理するかも重要なんですね。
(エラーを表示する/エラーページを作ってリンクさせるなど)

try~catchはあくまでシステムによる予期せぬエラー(バグ)が発生してしまったときに

それを回避するために使うということがわかりました。


もう一つ思ったのがif~else文と何が違うのp(;_;?)q ということ。

これは実際に書いてみるとわかるのですが、

定義していない変数や関数を呼び出した時点で未定義エラーが発生してしまうので、

try~catchの代わりにはなりません。

    if( hoge == false ){        //hogeが定義されてなければここで未定義エラー

        alert("エラー");

    }


いろんなJavascriptの本を見ても、例外処理について書かれてるのは

よくて2~3ページ。どれも最初に書いてある感じのことしか書いてありません。

また、先輩に聞いても例外設計は非常に難しく奥が深いのでよく考えなければいけないとのこと。

便利だけど、使い方によっては”いけてない”システムになってしまうんですね。


PHPやその他の言語でもtry~catchは使えるので、そちらを参考にするのもいいかもしれません。

また、Ajaxライブラリ(prototype.jsやjquery.js)などの中身を見ると、

かなりtry~catchが使われているのでそれを読み解くのも面白いかも。
(これは例外処理の部分だけじゃなく全体的に興味があるのでいずれやってみたいところです。)


【例外処理のメリット】

・プログラムとエラー処理を分離できてメンテナンスが楽になる。

・予測できないエラー(システム的バグ)が発生した際、catch内の処理によってそれを回避できる。

 

今回は以上です。

この記事の執筆者

新人女子プログラマ ゆきんこ 27歳 入社2年目

知識も技術もほぼゼロからスタートしてる、新人です。 『☆新人女子プログラマーの技術修行日記☆』書いてます。 【テー...

この人の会社をみる この人関連のイベントをさがす この人と一緒にはたらく

コメント

(メールアドレスは公開されません。メールで返答が欲しい場合などに入力してください)

このエントリへのトラックバックURL

トラックバック

トラックバックはありません

メンバー紹介

mhas

mhas

最近、清掃の方が顔を覚えてくれました・・・

ゆきんこ

ゆきんこ

知識も技術もほぼゼロからスタートしてる、新人です。 『☆新人女子プログラマーの技術修行日記☆』書いてます。 【テー...

たむかい

たむかい

はじめまして。サイテックのたむかいです。世の中では、ITの仕事は新3Kなんて言われることがあるそうです。きつい・帰...