54

Railsのモデルでカスタム例外を一種のラッパーとして定義しています例外:( begin[code]rescue[raise custom exception]end

例外を発生させるときは、a)内部関数がエラーを発生させるモデルのインスタンス、およびb)キャッチされたエラーに関する情報を渡したいと思います。

これは、外部データソースからのPOSTリクエストによって入力されるモデルの自動インポートメソッドで実行されます。

tldr; 自分で例外を定義した場合、どのようにして例外に引数を渡すことができますか?そのExceptionのinitializeメソッドがありますが、raise構文はExceptionクラスとメッセージのみを受け入れ、インスタンス化プロセスに渡されるオプションのパラメーターを受け入れないようです。

4

7 に答える 7

80

new で例外のインスタンスを作成します。

class CustomException < StandardError
  def initialize(data)
    @data = data
  end
end
# => nil 
raise CustomException.new(bla: "blupp")
# CustomException: CustomException
于 2012-07-24T18:25:13.960 に答える
-2

Exceptionサブクラスの新しいインスタンスを作成してから、それを発生させることができます。例えば:

begin
  # do something
rescue => e
  error = MyException.new(e, 'some info')
  raise error
end
于 2012-07-24T18:25:25.817 に答える