如果没有`throw`,为什么会调用`catch`块?

时间:2015-09-21 08:44:50

标签: ruby

以下内容:

catch :something do
  print true
end

true打印到控制台。我认为catch的意思是它只是由相应的throw调用。

不太重要的是,是否有单线语法?我很惊讶catch :something { print true }提出SyntaxError

1 个答案:

答案 0 :(得分:4)

  • 如果没有catch,为什么会调用throw块?

    以前可能有throw,程序员忘记在删除catch时忘记删除throw,或者不知道如何使用catch

    但在这种情况下更有可能的是你没有问“如果没有throw,为什么阻止执行?”该问题的答案是catch块被执行到引发throw的点。如果未引发throw,则catch块将完全执行。

  • 是否有单行语法?

    是。不要省略括号。

    catch(:something){print true}