종종 시간 초과되는 API를 사용하여 스크립트를 실행하고 있습니다. 이 경우 redo
에 도달하기 위해 begin/rescue
블록을 사용하고 있지만 redo
명령을 실행하기 전에 명령 줄에 무슨 일이 일어나고 있는지 기록하고 싶습니다.ruby rescue block - 하나의 명령 이상으로 응답하십시오.
begin
#...api query...
rescue ErrorClass
puts("retrying #{id}") && redo
end
불행히도 위의 스크립트는 작동하지 않습니다. 첫 번째 명령 만 실행됩니다.
begin
# api query
rescue ErrorClass do ###or:# rescue ErrorClass do |e|
puts "retrying #{id}"
redo
end
을하지만, 그 중 하나가 작동하지 않습니다
나는과 같이 여러 줄의 코드를 실행하는 구조 블록을 강제하고 싶습니다.
내가 행운과 같이 실행하기 위해 별도의 방법을 만드는 했어 ...
def example
id = 34314
begin
5/0
rescue ZeroDivisionError
eval(handle_zerodiv_error(id))
end
end
def handle_zerodiv_error(id)
puts "retrying #{id}"
"redo"
end
를이 실제로 작동합니다. 그러나 그것은 내 의견으로는 너무 많은 코드 라인을 필요로하며 내 멘토 (들)에 따라 어떤 방법으로나 정결하지 않은 평가를 사용합니다.
코드에서 redo' '의 목적은 무엇인가, 나는 당신이 내가 이상 과정을 시작할 수있어 대부분의 시간을 –
찾고있는 것을 얻고 있지 않다 그 id에 오류가 발생했다는 것을 다시 한 번 확인하고 작동합니다. 따라서 스크립트를 중단하지 않고이 작업을 수행하려고합니다. 필연적으로 API 명령 자체가 오류를 일으키는 경우가 있으므로 필자는 스크립트가 동일한 ID에서 멈추는지를 알고 싶습니다. –
* 여러 줄의 코드를 실행하도록 구조 블록을 강제하고 싶습니다. * - 무엇이 문제입니까? 마지막 행이 실행되지 않는다는 것을 의미합니까? –