• ブログ
  • ふぉとす
  • キーワード
  • ブックマーク
  • 写真
  • ログイン

Title

« Sometimes, The various people have come to write various comments at my diary's board. | We enjoyed to play the Wii which is game machine which was made by Nintendo, in the house which Takeishi-san, Sima-san and Kazuho started to live in. »
  • I and Yuru went to the Doutor which is coffee shop eating Zuwaigani bagels. 2007-03-11 00:00:00

     今日はkaeruspoonのコードをちょっとリファクタリングしました。そこで今さらというかなんというか、初めて例外処理を使ってみました。

        begin
          album = Album.find(params[:id])
        rescue ActiveRecord::RecordNotFound
          redirect_to(unknown_url)
          return
        end
    

     コントローラ内の処理です。findはデータベースにないidが指定されたとき、RecordNotFound例外を発生させます。rescue節の中でリダイレクトのあとにreturnしているのは、実際にリダイレクトされるのはメソッドが終了したときで、ここでreturnを入れてないと以降の正常処理を走らせてしまうからです。
     でも、こんな使いかたでいいのかな? それにただ一行のfindのために例外処理を使うのも大げさな印象がある。find(:conditions)を使えば、レコードが存在しないときはnilが返ってくるのだから、それを見て処理をわければいいだけのような気もする。どちらがいいのでしょう。でもとりあえずぼくは、例外処理でやっていくことにします。

     こうすればいいことに気づいた。

        begin
          album = Album.find(params[:id])
          ……以降、通常処理
        rescue ActiveRecord::RecordNotFound
          redirect_to(unknown_url)
        end
    

     こっちのほうが従来の使いかたなのかな。begin節内の複数のfindに対応できるし。なんとなく突然、C言語のエラー処理で例外的にgotoを使うやり方を思い出しました。

     create系のDBアクセスも例外処理を入れてみました。今までは何も考えずにcreateメソッドばかり使っていたけど、例外を発生させてやるためにnew→save!もしくはbuild→save!を使うようにしてみました。これで大丈夫なのかな? いろいろと調べてみたのだけど、このあたりの動きがよくわからなかったのです。第8回のRails勉強会@東京に参加したときに、どなたかがこのあたりの話をしていたのだけど、どうだったか忘れてしまいました。このように、常にいろいろ興味を持っていないと、結局いつかは自分が困ることになります。

    Commentコメント(0) Pageリンク元(34) Append 84
  • Apache辞典 (DESKTOP REFERENCE)
    メディア: 単行本
    文庫版 百器徒然袋―雨 (講談社文庫)
    メディア: 文庫
« Sometimes, The various people have come to write various comments at my diary's board. | We enjoyed to play the Wii which is game machine which was made by Nintendo, in the house which Takeishi-san, Sima-san and Kazuho started to live in. »

プロフィール

おおいしつかさ

Amazon商品の一覧

人気の記事ベスト10

  • 1.apache+mod_proxy_balancer+mongrelでRailsを動かす方法
  • 2.Perlでevalを使ってみる
  • 3.バージョン管理をsubversionからgitに移行してみた
  • 4.tokyobikeのドロップハンドル化
  • 5.ubuntu8.04でデュアルディスプレイを使う
  • 6.restful_authenticationを使ってみた
  • 7.URLなど、長い英字を折り返して表示する方法
  • 8.Rspecでコントローラのspecファイルを書く
  • 9.フラグメントキャッシュをRailsで使う。
  • 10.RailsとPostfixで受信メールを処理する方法

コメント

  • ユル(プログラマが若隠居をしたら)
  • ユル(風邪ひいた)
  • ユル(バイクがへたくそになっていた)
  • おおいしつかさ(便利になって不便になる)
  • 武石(便利になって不便になる)
  • ユル(劇場版 天元突破グレンラガン)
  • ユル(フラニーとゾーイー (新潮文庫): サリンジャー, 野崎 孝: 本)

過去の記事

2006年
12月
2007年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月

キーワード一覧

ActionScript AmazonResources git javascript kaeruspoon milook NSR Objective-C Rails Ruby Ruby on Rails subversion Thin tokyobike ubuntu VAIO VAIO typeZ Waves Xen ぐりぐり カンタロー スノボー ドトール ドライブ バイク プログラミング ユルさん 執筆 日本酒 模型 真中洋嗣 自転車

Youtube

ニコニコ動画