相关疑难解决方法(0)

什么是Ruby中的catch和throw?

在大多数其他语言中,catch和throw语句执行begin,rescue和raise语句在Ruby中执行的操作.我知道你可以用这两个陈述来做到这一点:

catch :done do
  puts "I'm done."
end
Run Code Online (Sandbox Code Playgroud)

if some_condition
  throw :done
end
Run Code Online (Sandbox Code Playgroud)

但这有用的是什么?有人可以给我一个Ruby中使用catch和throw语句的例子吗?

ruby

31
推荐指数
2
解决办法
9213
查看次数

C#:你举起或抛出一个例外吗?

我知道这可能并不重要,但我想知道什么是正确的.

如果一段代码包含某些版本的throw new SomeKindOfException().我们是否说这段代码可能引发异常?或抛出异常?

关键字是throw,所以我倾向于那个,但提出异常也被大量使用...

他们有某种不同的含义吗?他们中的一个是否与另一个有所不同?或者它只是两个词意味着完全相同的东西?

c# terminology exception raise throw

13
推荐指数
1
解决办法
6389
查看次数

红宝石的投掷和效率

catch在Ruby中意味着跳出深层嵌套的代码.在Java中,例如可以用Java try-catch来处理异常,但它被认为是不好的解决方案,而且效率也非常低.在Ruby中我们处理异常begin-raise-rescue,我认为将它用于其他任务也很昂贵.

Ruby是否catch-throw真的是一个更有效的解决方案,begin-raise-rescue还是有任何其他理由使用它来打破嵌套块而不是begin-raise-rescue

ruby performance try-catch control-structure throw

5
推荐指数
2
解决办法
1183
查看次数

为什么我不能在"调用者"方法中捕获测试异常?

我不明白为什么这段代码不能正常工作:

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方法没有捕获任何东西.

ruby exception

0
推荐指数
1
解决办法
755
查看次数