2014-09-30 2 views
1

타사 서비스에 범주를 동기화하는 데 사용하는 두 가지 방법이 있습니다. 첫 번째 메소드는 모든 것을 반복하고 두 번째 메소드는 실제로 각 카테고리를 반출합니다. 오류가 발생하면 루프에서 완전히 벗어날 수 있습니까?Ruby/Rails가 루프 내부의 메서드에서 벗어났습니다.

def export_all 
    Category.find_each do |c| 
    export_category(c) 
    end 
end 

def export_category(c) 
    begin 
    sync_category(c) 
    rescue Exception => e 
    # break out of `export_all` loop 
    end 
end 

답변

1

루프를 벗어날 수있는 몇 가지 옵션이 있습니다. 가장 간단한 방법은 반복 코드에서 break 또는 return을 사용할 수 있습니다. 위의 예제의 맥락에서

, 그것은 다음을 수행하는 응용 프로그램의 큰 맥락 내에서 가능하면 쉬울 수 있습니다 :

당신은 루프를 원하는 그것은 당신의 질문에서 나타납니다
def export_all 
    Category.find_each do |c| 
    begin 
     export_category(c) 
    rescue SpecificErrorIsBetterThanGenericExceptionIfPossible => e 
     break 
    end 
    end 
end 

def export_category(c) 
    sync_category(c) 
end 

예외가 발생할 때 break하는 export_all 메소드. 그러한 경우, 나는 그 수준에서 내 break/error 처리 코드를 선호한다.