假设我对某个对象执行bearingSnap
并且.operator
产生错误,我怎么能不让程序终止而是做其他事情。
答案 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通过rescue
,exception_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
=> e
因此,根据错误类型,如果您想
,您可以捕获特定的错误类型 e
部分将您的错误分配给名为ensure
的变量。您可以将其重命名为您想要的任何内容。
最后一部分是ensure
,这是可选,无论您是否收到错误,都会确保执行。因此,如果您要完成某些操作,如果发生错误,您可以使用let textField = UITextField.appearance()
textField.tintColor = .greenColor()
这是关于ruby错误处理的good read