raise -> object
[permalink][rdoc][edit]raise(message) -> object
raise(exception, message = nil, backtrace = nil) -> object
-
selfが表すファイバーが最後に Fiber.yield を呼んだ場所で例外を発生させます。
Fiber.yield が呼ばれていないかファイバーがすでに終了している場合、 FiberError が発生します。
引数を渡さない場合、RuntimeError が発生します。 message 引数を渡した場合、message 引数をメッセージとした RuntimeError が発生します。
その他のケースでは、最初の引数は Exception か Exception のインスタンスを返す exception メソッドを持ったオブジェクトである必要があります。この場合、2つ目の引数に例外のメッセージを渡せます。また3つ目の引数に例外発生時のスタックトレースを指定できます。
- [PARAM] message:
- 例外のメッセージとなる文字列です。
- [PARAM] exception:
- 発生させる例外です。
- [PARAM] backtrace:
- 例外発生時のスタックトレースです。文字列の配列で指定します。
f = Fiber.new { Fiber.yield } f.resume f.raise "Error!" # => Error! (RuntimeError)
f = Fiber.new do loop do Fiber.yield(:loop) end :exit end p f.resume # => :loop p f.raise StopIteration # => :exit