【連載】Twitterまとめ - 第2回 サービス企画の苦しみ編(5月3週)
2010年05月27日
サイテック株式会社で、根っからの技術者である社長や、大手IT企業から転職してきた仲間たちと議論しながら、社会をもっと豊かに、幸せにするアプリケーションを作ってみませんか?
この会社の特徴を知る
など 8 記事
など 17 記事
など 66 記事
今回はなかなか理解できない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内の処理によってそれを回避できる。
今回は以上です。
トラックバックはありません
メンバー紹介
2010年05月27日
2010年05月18日
2010年04月26日
2010年04月19日
2010年03月10日
2010年03月10日
2010年02月25日
2010年01月22日
2009年12月24日
2009年12月21日
コメント