--- raise
--- raise(exception)
--- raise(message)
--- raise(error_type, message [, backtrace])
--- fail(error_type, message [, backtrace])

    㳰ȯޤ

    ̵ϡƱåɤƱ֥åǺǸ rescue 줿
    㳰֥ ($!) ȯޤΤ褦
    㳰¸ߤʤȤ㳰 RuntimeError ȯޤ

        begin
          open("nonexist")
        rescue
          raise   # => `open': No such file or directory - "nonexist" (Errno::ENOENT)
        end

    Ĥξ硢ʸǤСʸ
    Ȥ RuntimeError 㳰ȯޤ
    㳰饹ޤ㳰֥ȤǤäˤϤ
    ȯޤ

        raise "error message"    # => -:1: error message (RuntimeError)

        raise ArgumentError      # => -:1: ArgumentError (ArgumentError)

        raise ArgumentError.new  # => -:1: ArgumentError (ArgumentError)

    ĤޤϻĤξ硢ǻꤵ줿㳰
    ͿåȤȤȯޤξ硢㳰㳰饹ޤ
    㳰֥Ȥǻꤷޤ軰㳰ȯΥåȥ졼
    ǡcaller ͤƱǤʤФޤ

        raise ArgumentError, "error message"
        # => -:1: error message (ArgumentError)

        raise ArgumentError, "error message", ["file1:99",
                                               "file2:999:in `method'"]

        # => file1:99: error message (ArgumentError)
                      from file2:999:in `method'

    㳰ǤϤʤ饹䥪֥Ȥ˻ꤷ硢ºݤ
    ȯ㳰ϤΥ֥Ȥ exception ᥽åɤ
    ֤ͤˤʤޤ

        class MyException
          def exception
            ArgumentError.new
          end
        end

        raise MyException.new

        # => -:7: ArgumentError (ArgumentError)

    ηǰꤷϡexception ᥽
    ɤˤΰϤޤ

        class MyException
          def exception(mesg)
            ArgumentError.new(mesg)
          end
        end

        raise MyException.new, "error message"

        # => -:7: error message (ArgumentError)

    exception ᥽åɤɬ㳰֥Ȥ֤ʤФ
    ޤ󡣤Ǥʤ TypeError ȯޤ

    ȯ㳰ѿ $! ˳Ǽޤޤ㳰
    ȯΥåȡ쥹ѿ $@ ˳Ǽ
    ޤ

