我有以下要求:
如果参数类型不是字符串“Kasaya”,则在robe方法中引发自定义异常处理程序KasayaError。它应该返回“Dharmaguptaka的Kasaya Robe”否则
我已实现以下功能:
def robe(type)
if type != 'Kasaya'
raise KasayaError("Invalid")
end
return "Dharmaguptaka's Kasaya Robe"
end
但是当我针对rspec运行时,我得到了以下结果:
如果类型是'Kasaya',应该返回'Dharmaguptaka的Kasaya Robe' NoMethodError #RSpec :: Core :: ExampleGroup :: Nested_157:0x000000029b1598
的未定义方法`KasayaError'我的问题是为什么代码破了?
在我看来,如果参数是Kasaya,将执行return语句以返回函数的结果。我是对的吗?
答案 0 :(得分:2)
如果参数不是Kasaya,则将执行return语句以返回函数的结果。我是对的吗?
不,这与您的代码设计的目的相反。
如果参数不是"Kasaya"
,则会引发异常,并且永远不会达到return
。这是异常的全部要点:它们允许方法尽早“返回”,展开调用堆栈,直到找到匹配的异常处理程序。
如果return
type
,则执行流程的唯一方法是"Kasaya"
语句。然后条件type != "Kasaya"
为false,永远不会达到raise
。