我不明白为什么这段代码不能正常工作:
def test
raise Exception.new 'error'
end
def caller
begin
test
rescue =>e
puts e.message
end
end
caller
Run Code Online (Sandbox Code Playgroud)
我想在caller
方法中捕获测试异常,但似乎该caller
方法没有捕获任何东西.
你的代码不起作用的原因是因为rescue
没有明确声明的异常类型只有catches StandardError
,它是的子类Exception
.因为你正在提高Exception
,高于StandardError
,你rescue
不会抓住它.
通常你想使用更具体的异常,你几乎不必使用Exception
过StandardError
.
例如,这可以正常工作:
begin
raise StandardError.new 'Uh-oh!'
rescue => e
p e.message
end
#=> Uh-oh!
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
755 次 |
最近记录: |