class SignalException

要約

捕捉していないシグナルを受け取ったときに発生します。

実際に発生したシグナル名は、 Exception#message から「"SIG" + シグナル名」という形で得られます。

デフォルトの状態では、以下のシグナルが SignalException を発生させます。

なお、SIGINT シグナルを受けた場合は SignalException の下位クラスである Interrupt が発生します。

目次

特異メソッド
インスタンスメソッド

継承しているメソッド

Exceptionから継承しているメソッド

特異メソッド

new(sig_number) -> SignalException[permalink][rdoc]
new(sig_name) -> SignalException
new(sig_number, sig_name) -> SignalException

引数で指定したシグナルに関する SignalException オブジェクトを生成して返します。

引数は Signal.#list に含まれるもののいずれかを指定する必要があります。

[PARAM] sig_name:
シグナル名を Symbol オブジェクト、文字列のいずれかで指定します。
[PARAM] sig_number:
シグナル番号を指定します。整数以外のオブジェクトを指定した場合は to_int メソッドによる暗黙の型変換を試みます。


signal_number = Signal.list["INT"]
se = SignalException.new(signal_number) # => #<SignalException: SIGINT>
se.signo # => 2


se = SignalException.new("INT") # => #<SignalException: SIGINT>
se.signm # => "SIGINT"

[SEE_ALSO] Signal.#list

インスタンスメソッド

signm -> String[permalink][rdoc]

self.message のエイリアスです。



begin
  Process.kill('HUP', Process.pid)
  sleep
rescue SignalException => e
  puts e.signm  # => SIGHUP
end
signo -> Integer[permalink][rdoc]

self のシグナル番号を返します。



p Signal.signame(1) # => "HUP"
begin
  Process.kill('HUP', Process.pid)
  sleep
rescue SignalException => e
  p e.signo # => 1
end