タグ

exceptionに関するtakaesuのブックマーク (4)

  • rescue_fromの走査は下から上だった。 - Qiita

    どうも思った通りにrescue_fromが例外を捕まえないと思ったら、下記だった。 They are searched from right to left, from bottom to top, and up the hierarchy. 右から左、下から上へ、そして継承を遡って検索される。 ずっとこの辺りのコードを弄っていなかったのだが、なぜ今まで想定通りに動いていたのだろうか…謎だ。 class ApplicationController < ActionController::Base # ... # ハンドルしきれなかったエラーは500エラー扱い # 評価は右から左、下から上へなされるのでこの場所で良い。 # @see http://api.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html res

    rescue_fromの走査は下から上だった。 - Qiita
    takaesu
    takaesu 2015/06/29
    例外を一挙に受け取るrescue_fromの評価順
  • Rails の rescue_from で拾えない例外を exceptions_app で処理する - Qiita

    rescue_from で拾えない例外がある Rails が用意してくれている rescue_from は controller の外側で発生した例外を拾ってくれない。 例えばパラメータに不正なエンコーディングが含まれるときに、Rails は ActionController::BadRequest を例外として投げる。しかし、この処理は Rails の routing 層で行われているため rescue_from で捕捉することはできない。 そのため Rails の外で発生した例外を捕捉していない場合、ユーザには意図していないエラーページが見えている可能性がある。 Rails の外で起きる例外は exceptions_app で処理するのがお手軽 例えば config/initializers/exceptions_app.rb に以下のコードを書いておく(ErrorsControlle

    Rails の rescue_from で拾えない例外を exceptions_app で処理する - Qiita
    takaesu
    takaesu 2014/09/09
    エラー処理、例外処理
  • 欢迎光临-HB

    欢迎光临-HB 欢迎光临-HB。 <<<返回首页

  • Ruby 2.1.0の新機能のException#cause - @znz blog

    Ruby 2.1.0-preview2 リリース では 2013-11-10 の大きめの変更 が気になっていて、 ここでは Exception#cause というメソッドを紹介します。 "literal"f のように書く freeze された文字列リテラル機能が 2.1.0-preview1 には入っていたのですが、それが削除されて "literal".freeze がコンパイル時に特別扱いされるようになった、 というのも気になっています。 この投稿は Ruby Advent Calendar 2013 の3日目の記事です。 Exception#cause の例 Ruby 2.0.0 までは rescue や ensure の中で別の例外が発生すると、 別途保存しておかない限り、 以前に発生した例外がわからなくなってしまっていましたが、 Ruby 2.1.0(-preview2) からは別

    takaesu
    takaesu 2013/12/03
    causeメソッド rescueブロック内などで$!.cause.causeのようにメソッドチェーンでつなぐと発生元を辿れるようになる
  • 1