ruby rescue后如何停止执行

ruby how to stop the execution after rescue

我有一个函数,当出现异常时,我正在拯救它。 但是程序继续到下一行并调用下一个 func create_request

但有异常时,我不想继续

def  validate_request_code options    
  if check_everything is good
     #code to validate
  else
   errors << "something is gone bad"
  end
[errors.size == 0, errors.size == 0 ? options : raise(ArgumentError, "Error while validating #{errors}")]
end

我正在尝试 catch/rescue 异常

def validate_request options

  begin
   validate_request_code options
  rescue ArgumentError => e
      log :error
  rescue Exception => e
      log :error 
  end

  sleep 20
  
  if options['action'] == "create"
    create_request options
  end
end

如果 'not continue' 你的意思是你想继续原来的错误(即,你只是想在途中采取行动),你可以在 rescue 块中调用 raise ,这重新引发了原始错误。

def foo
  begin
    # stuff
  rescue StandardError => e
    # handle error
    raise  
  end
end

您也可以在 rescue 块中简单地 return。

def foo
  begin
    # stuff
  rescue StandardError => e
    # handle error
    return some_value  
  end
end

顺便说一句,通常你想拯救 StandardError 而不是 ExceptionStandardError 涵盖了您在应用程序中可以合理处理的所有事情。外面的事情,比如内存不足等,是你无法控制的。