gpt4 book ai didi

ruby-on-rails - 在 Ruby 中,不同的救援语句之间有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:19 25 4
gpt4 key购买 nike

在Ruby中有什么区别

def run
begin
raise SomeError.new
rescue SomeError
handle
end
end

def run
raise SomeError.new
rescue SomeError
handle
end

最佳答案

示例:

begin
# something which might raise an exception
rescue SomeExceptionClass => some_variable
# code that deals with some exception
ensure
# ensure that this code always runs
end

在这里,def 作为一个begin 语句:

def
# something which might raise an exception
rescue SomeExceptionClass => some_variable
# code that deals with some exception
ensure
# ensure that this code always runs
end

基本上没有区别。在上面的代码中,方法 def 可以作为一个 begin 语句:

正如 spickermann 评论的那样,您还可以使用仅在没有预期的情况下运行的 else

begin  
# -
rescue OneTypeOfException
# -
rescue AnotherTypeOfException
# -
else
# Other exceptions
end

对于 begin block 中的每个 rescue 子句,Ruby 依次将引发的异常与每个参数进行比较。如果 rescue 子句中指定的异常与当前抛出的异常的类型相同,或者是该异常的父类(super class),则匹配将成功。 else 子句中的代码将在 begin 语句主体中的代码无异常运行至完成时执行。如果发生异常,那么else子句显然不会被执行。

请参阅此以获得更多理解:http://rubylearning.com/satishtalim/ruby_exceptions.html

关于ruby-on-rails - 在 Ruby 中,不同的救援语句之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30160842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com