如何在Ruby中出错?

时间:2016-09-09 18:17:25

标签: ruby error-handling conditional

假设我对某个对象执行bearingSnap并且.operator产生错误,我怎么能不让程序终止而是做其他事情。

2 个答案:

答案 0 :(得分:1)

您可以通过在rescue阻止中捕获异常来执行此操作。

begin
  array.operator
# Change the class according to the Exception you are getting
rescue StandardError => e
  exceptions ||= []
  exceptions << e
end

答案 1 :(得分:1)

Ruby通过rescueexception_array = [] begin array.operator rescue Exception => e exception_array << e ensure # this line will execute irrespective of an # error happened or not end 块提供异常处理。你可以做以下

begin

让我们分解命令和程序流程

首先,您的程序尝试在rescue块中执行命令。因此,如果它引发任何错误,则会转到Exception部分

Exception NoMemoryError ScriptError LoadError NotImplementedError SyntaxError SignalException Interrupt StandardError ArgumentError IOError EOFError IndexError StopIteration LocalJumpError NameError NoMethodError RangeError FloatDomainError RegexpError RuntimeError SecurityError SystemCallError SystemStackError ThreadError TypeError ZeroDivisionError SystemExit fatal 可以捕获任何类型的异常。但您也可以指定所需的异常类型。以下是来自nicksiegers blog

的ruby异常层次结构
=> e

因此,根据错误类型,如果您想

,您可以捕获特定的错误类型

e部分将您的错误分配给名为ensure的变量。您可以将其重命名为您想要的任何内容。

最后一部分是ensure,这是可选,无论您是否收到错误,都会确保执行。因此,如果您要完成某些操作,如果发生错误,您可以使用let textField = UITextField.appearance() textField.tintColor = .greenColor()

这是关于ruby错误处理的good read

相关问题