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
而不是 Exception
。 StandardError
涵盖了您在应用程序中可以合理处理的所有事情。外面的事情,比如内存不足等,是你无法控制的。
我有一个函数,当出现异常时,我正在拯救它。
但是程序继续到下一行并调用下一个 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
而不是 Exception
。 StandardError
涵盖了您在应用程序中可以合理处理的所有事情。外面的事情,比如内存不足等,是你无法控制的。