我正在学习Ruby并遇到了fail
关键字。这是什么意思?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
Answers:
在Ruby中,fail
是的同义词raise
。该fail
关键字是所述的方法Kernel
,其是由类包括模块Object
。该fail
方法会引发运行时错误,就像raise
关键字一样。
该fail
方法具有三个重载:
fail
:引发RuntimeError
没有错误信息的。
fail(string)
:RuntimeError
使用字符串参数引发a作为错误消息:
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'
。
如果不带参数,则在$中引发异常!或如果$!引发RuntimeError!是零。使用单个String参数,将RuntimeError与字符串一起显示为消息。否则,第一个参数应该是Exception类的名称(或发送异常消息时返回Exception对象的对象)。可选的第二个参数设置与异常关联的消息,第三个参数是回调信息数组。begin ... end块的救援子句捕获异常。
来源:内核模块上的Ruby文档。
raise
www.ruby-doc.org是您的朋友。当我在Google上搜索rubydoc fail
“内核”时,它是第一个热门。我的建议是,如果有疑问,请转到权威来源,以获取诸如此类的定义性内容。
raise
在处理异常和fail
不处理异常时都会使用它们。