2013-08-28 5 views
0

나는 루비에 대해 점점 더 많은 것을 배우고 있으며 때때로 (여러 API 호출을하는) 시간 초과되는 스크립트를 작성했다.Ruby를 사용하여 루프 내에서 예외를 구해야합니까?

은 내가 이런 일에 예외를 rescue 할 필요가 알고 : 나는 rescue 블록 있음을 배치 할 위치

rescue Timeout::Error => e 
    # log #{e} for later, maybe 
end 

내 질문입니다. 여러 루프 내에서 여러 API 호출을하고 있으므로 각 API 루프 내에 해당 블록을 넣어야합니까? 예를 들어 스크립트 마지막 부분에 rescue 블록을 한 번 작성하고 스크립트의 각 루프 내에서 작동하도록하는 것이 좋습니다. 나는 루비 1.9.3을 사용하고있다.

+0

Avdi의 책을 가져 가서 그걸 보러 간다. –

+2

나는 예외가 언제 어디에서 발생했는지 찾기에 얼마나 정확한지에 달렸다고 대답했다. 예를 들어, 어떤 API 호출이 시간 초과되었는지를 정확히 나타내는 메시지를보고 싶다면 각각에 대해 '복구'가 필요합니다. – lurker

답변

1

대부분 오류에 따라 달라집니다.

예를 들어 오류가 루프 실행을 중단하지 않고 루프 내에서 예외를 잡으려면 오류를 기록하고 다음 반복을 계속할 수 있습니다.

오류가 "치명적"이고 루프를 계속할 수 없거나 반복하고 싶지 않은 경우 외부로 잡습니다.

+0

그건 의미가 있습니다. 스크립트를 통해 ~ 10,000 개의 이메일을 예약하고 있으며, 10,000 명 모두가 필요로하는 곳에 이메일을 보내는 것이 중요합니다. 나는 루프 밖에서 예외를 잡아서 모든 예정된 이메일을 삭제하도록 강요하고, 스크립트를 다시 실행하여 스케줄을 모두 다시 잡을 수 있습니다. 가장 효율적인 생각처럼 보이지는 않지만 지금은 충분할 것입니다. 도와 주셔서 감사합니다! – Luigi