raise -> ()[permalink][rdoc][edit]raise(message, cause: $!) -> ()raise(error_type, message = nil, traceback = nil, cause: $!) -> ()(?String message, ?cause: Exception?) → nil(_Exception, ?_ToS message, ?Array[Thread::Backtrace::Location] | Array[String] | nil backtrace, ?cause: Exception?) → nil-
自身が表すスレッドで強制的に例外を発生させます。
引数を渡さない場合は RuntimeError を発生させます。
messageだけを渡した場合は、messageをメッセージとした RuntimeError を発生させます。引数の意味は Kernel?.raise と同じです。- [PARAM]
error_type: - Kernel?.raise を参照してください。
- [PARAM]
message: - Kernel?.raise を参照してください。
- [PARAM]
traceback: - Kernel?.raise を参照してください。省略した場合は、例外が発生した時点でのそのスレッドのバックトレースになります。
- [PARAM]
cause: - 現在の例外($!)の代わりに Exception#cause に設定する例外を指定します。Exception オブジェクトまたは nil を指定できます。Ruby 4.0 から指定できます。
例: cause: を指定するThread.new { sleep 1 Thread.main.raise "foobar" } begin sleep rescue p $!, $@ end => #<RuntimeError: foobar> ["-:3"]th = Thread.new do begin sleep rescue => e e end end sleep 0.1 until th.status == "sleep" th.raise(ArgumentError, "foo", cause: RuntimeError.new("bar")) e = th.value p e # => #<ArgumentError: foo> p e.cause # => #<RuntimeError: bar> - [PARAM]