ruby中的捕获异常

ruby中的捕获异常,ruby,exception,Ruby,Exception,我有一个ruby函数 def mark_completed var_a = self.a self.check_something end 另一个功能是 def check_something(query = nil) raise 'Some_exception' if condition_a_satisfy? return true end 请看,函数check\u something正在引发异常,我想要的是:-“捕获异常并以某种方式返回

我有一个ruby函数

def mark_completed
      var_a = self.a
      self.check_something
    end
另一个功能是

def check_something(query = nil)
   raise 'Some_exception' if condition_a_satisfy?
      return true
 end
请看,函数check\u something正在引发异常,我想要的是:-“捕获异常并以某种方式返回false” 我怎么做


注意:-我无法更改我的检查功能。

这确实涉及更改方法,但这仍然有助于了解。

嗨,我想你正在寻找ruby中的try-and-catch语句。如果没有错误或异常,它将运行代码,如果有,它将运行指定的代码

例如:

def check_something(query = nil)
begin
# to execute with no exceptions
rescue Exception
# to execute when you hit an exception
ensure
# to execute always
end
#mark_中的救援运行时错误已完成 当你用一个字符串打电话时,你实际上是在提高。您应该明确地捕捉到这一点,以避免无意中捕捉到其他来自StandardError的异常,或者通过拯救异常来引发灾难,这几乎从来都不是一个好主意。例如:

def mark_completed
  self.check_something
rescue RuntimeError
  false
end

这将以一种可控的方式解决您提出的问题,但有意回避这样一个问题:首先,引发异常是否是代码要做的正确事情,或者是否可以进行其他重构。

那么,在本例中,
mark\u completed
中的
rescue
。直接调用
condition\u a\u success?
是否是一个选项?不过,您不应该营救
异常。这太普通了。而且,这不能称为try/catch。ruby中没有
try
。有
捕获
,但它完全做了其他事情。谢谢你,伙计!我是ruby和编程的初学者,请建议我从哪里学习catch和try,以及它们的意义。@AnkitKumar try/catch(我称之为try/catch,因为我来自一种没有实现rescue Sure的语言),基本上是一种代码块,它会发现错误,如果发现错误,运行某些代码,如果没有发现错误,则运行某些代码。这很有用,因为您可以使程序在出现错误时不停止,但在出现错误时运行某些代码。以下是有关ruby try/catch的更多信息的网站: