Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Errno::EISCONNクラス

class Errno::EISCONN + SystemCallError + StandardError + Exception

クラスの継承リスト: Errno::EISCONN < SystemCallError < StandardError < Exception < Object < Kernel

要約

システムコールのエラーコードを表す例外クラスです。詳細は Errno::EXXX を参照してください。

特異メソッド

new(error_message = nil) -> Exception
exception(error_message = nil) -> Exception

例外オブジェクトを生成して返します。

[PARAM] error_message:
エラーメッセージを表す文字列を指定します。このメッセージは 属性 Exception#message の値になり、デフォルトの例外ハンドラで表示されます。
new(error_message) -> SystemCallError

SystemCallError オブジェクトを生成して返します。

[PARAM] error_message:
エラーメッセージを表す文字列

例:

p SystemCallError.new("message")
    # => #<SystemCallError: unknown error - message>
new(error_message, errno) -> SystemCallError
new(errno) -> SystemCallError

整数 errno に対応する Errno::EXXX オブジェクトを生成して返します。

整数 errno をシステムコールで発生したエラーの原因を示すコードであると解釈し、 対応する例外クラスのインスタンスを生成して返します。

生成されるオブジェクトは SystemCallError の直接のインスタンスではなく、サブクラスのインスタンスです。 それらのサブクラスは Errno モジュール内に定義されています。 対応するサブクラスが存在しないコードを与えた場合には、 SystemCallError の直接のインスタンスが生成されます。

エラーコードの取り得る値および意味はシステムに依存します。詳しくは Errno::EXXX を参照してください。

[PARAM] error_message:
エラーメッセージを表す文字列
[PARAM] errno:
システム依存のエラーコード
[EXCEPTION] TypeError:
errno を整数に変換できないときに発生します。
[EXCEPTION] RangeError:
errno が Fixnum で表せる範囲を超えるときに発生します。

例:

p SystemCallError.new("message", 2)
    # => #<Errno::ENOENT: No such file or directory - message>
p SystemCallError.new(2)
    # => #<Errno::ENOENT: No such file or directory>
p SystemCallError.new(256)
    # => #<SystemCallError: Unknown error 256>

インスタンスメソッド

backtrace -> [String]

バックトレース情報を返します。

デフォルトでは

  • "#{sourcefile}:#{sourceline}:in `#{method}'" (メソッド内の場合)
  • "#{sourcefile}:#{sourceline}" (トップレベルの場合)

という形式の String の配列です。

def methd
  raise
end

begin
  methd
rescue => e
  p e.backtrace
end

#=> ["filename.rb:2:in `methd'", "filename.rb:6"]
errno -> Fixnum | nil

レシーバに対応するシステム依存のエラーコードを返します。

エラーコードを渡さない形式で生成した場合は nil を返します。

begin
  raise Errno::ENOENT
rescue Errno::ENOENT => err
  p err.errno                 # => 2
  p Errno::ENOENT::Errno      # => 2
end

begin
  raise SystemCallError, 'message'
rescue SystemCallError => err
  p err.errno                 # => nil
end

なお、例外を発生させずにエラーコードを得るには、 Errno::EXXX::Errno 定数を使います。

exception -> self
exception(error_message) -> Exception

引数を指定しない場合は self を返します。引数を指定した場合 自身のコピー を生成し Exception#message 属性を error_message にして返します。

Kernel.#raise は、実質的に、例外オブジェクトの exception メソッドの呼び出しです。

[PARAM] error_message:
エラーメッセージを表す文字列を指定します。
begin
 ...        # 何か処理
rescue => e
 raise e.exception("an error occurs during hogehoge process")  # 詳しいエラーメッセージ
end
message -> String
to_s -> String
to_str -> String

エラーメッセージをあらわす文字列を返します。

begin
  1 + nil
rescue => e
  p e.message   #=>  "nil can't be coerced into Fixnum"
end
set_backtrace(errinfo) -> nil | String | [String]

バックトレース情報に errinfo を設定し、設定されたバックトレース 情報を返します。

[PARAM] errinfo:
nil、String あるいは String の配列のいずれかを指定します。
class Errno::EISCONN