我正在学习Ruby,遇到了fail个关键词.这是什么意思?

if password.length < 8
   fail "Password too short"
end
unless  username
   fail "No user name set"
end

推荐答案

在Ruby中,failraise的同义词.fail关键字是类Object包含的Kernel模块的方法.fail方法会引发运行时错误,就像raise关键字一样.

fail方法有三个重载:

  • fail:在没有错误消息的情况下引发RuntimeError.

  • fail(string):以字符串参数作为错误消息引发RuntimeError:

    fail "Failed to open file"
    
  • fail(exception [, string [, array]]):引发类exception(第一个参数)的异常,其中包含可选错误消息(第二个参数)和回调信息(第三个参数).

    示例:假设您定义了一个函数,如果给出一个错误的参数,该函数将失败.最好是ArgumentError分而不是RuntimeError分:

    fail ArgumentError, "Illegal String"
    

    另一个例子:可以将整个backtrace传递给fail方法,这样就可以访问rescue块内的跟踪:

    fail ArgumentError, "Illegal String", caller
    

    caller是一个内核方法,它以file:line: in 'method'的形式将回溯作为字符串数组返回.

在没有参数的情况下,以$为单位引发异常!或者引发运行时错误

资料来源:Ruby Documentation on the Kernel Module.

Ruby相关问答推荐

Ruby;人;docs-使用\";?

Ruby - 将两个哈希与一些相似的键合并

Ruby 按变量条件划分数组数组

Python 正则表达式是否等同于 Ruby 的原子分组?

是否应该在生产时缩小服务器代码?

python:pythonbrew 和 virtualenv 有什么区别?

我在哪里可以找到积极开发的 Ruby lint 工具?

Ruby 连接字符串并添加空格

如何通过反射获取 Ruby 的 Module 类定义的常量?

如何在 Ruby 中临时重定向标准错误?

如何在 ruby​​ net/http 中实现 cookie 支持?

从 1 开始循环

Ruby 中的 $1 和 \1

如何从 Ruby 判断具有特定 pid 的进程是否正在运行?

Bundle不适用于 rbenv

跳过 Enumerable#collect 中的迭代

测试变量是否等于两个值之一

如何在 Ruby 中取消定义类?

如何在 Ruby 中编写复杂的多行 if 条件?

如何在 Ruby 中对数组进行分块