signals/exception_construction_parens.rb

tests/_examples/signals/exception_construction_parens.rb in the metorex repository.

by_number = SignalException.new(Signal.list["INT"])
puts(by_number.signm)
puts(by_number.message)
puts(by_number.signo == Signal.list["INT"])

puts(SignalException.new("INT").signm)
puts(SignalException.new("SIGINT").signm)
puts(SignalException.new(:TERM).signm)
puts(SignalException.new(:SIGTERM).signm)

named = SignalException.new(Signal.list["INT"], "custom name")
puts(named.signm)
puts(named.message)
puts(named.signo == Signal.list["INT"])

def rejected
  yield
rescue ArgumentError => error
  error.message
end

puts(rejected { SignalException.new(100000) })
puts(rejected { SignalException.new("NONEXISTENT") })
puts(rejected { SignalException.new(:NONEXISTENT) })
puts(rejected { SignalException.new(Object.new) })
puts(rejected { SignalException.new("INT", "name") })

interrupt = Interrupt.new("still a message")
puts(interrupt.signm)
puts(interrupt.signo == Signal.list["INT"])

Output:

SIGINT
SIGINT
true
SIGINT
SIGINT
SIGTERM
SIGTERM
custom name
custom name
true
invalid signal number 100000
invalid signal name NONEXISTENT
invalid signal name NONEXISTENT
bad signal type Object
wrong number of arguments (given 2, expected 1)
still a message
true