2009-08-24 10 views

答えて

12

例外処理は、Railsの一部ではなく、Railsの一部であるため、Railsアプリケーションのどこでも実行できます。あなただけのようにそれを包む、エラーをキャッチしたい場所:

begin 
    SomethingElse.doSomething(x, y) 
rescue Exception 
    ErrorLogger.log(Time.now, "Something went wrong!") 
end 

をあなたは常に「レスキュー例外」はずの代わりに、単に「救出」ことに注意してください。 "レスキュー"を使用するだけで、ExceptionのサブクラスであるStandardErrorがキャッチされます(あなたが通過したくないものを意味するものを意味する)。

またいつものように、あなたが実行してに例外を発生させることができます:あなたのコード内

raise ArgumentError, "Illegal arguments!" 

どこでも、それはモデルやコントローラです。

+2

小規模の訂正:2番目のコードスニペットに2倍の「raise」があります。しかし、良い答え。 – Shadwell

+0

これは構文エラーでも倍増でもありません。こちらをご覧ください:http://web.njit.edu/all_topics/Prog_Lang_Docs/html/ruby/syntax.html#raise –

+2

一般的に私は同意しますが、私は最初のコードブロックに同意しません。 「レスキュー例外」は、プロセスを強制終了しようとする信号まで救済するため、直接使用しないでください。あなたがコードのその部分をきれいに殺されないようにしたいと本当に確信しているのでなければ、Rubyが正当な理由で持っているデフォルトの動作に固執してください。 したがって、バニラの "レスキュー"を使用し、カスタムエラークラスをStandardErrorから派生させる方が一般的には良い方法です。 – nertzy

1

私が間違っていない限り、あなたはRubyのどこでもエラー処理を使用できます。あなたは何をしようとしているのですか?

関連する問題