다음 코드는 완벽하게 작동합니다.메서드 호출시 루비 블록 사용
@doc = open(link) { |f| Hpricot(f) }
는하지만
@doc = resolve_link(link) { |f| Hpricot(f) }
def resolve_link(link)
begin
return open(link)
rescue
logger.debug("#{$!} for link #{link}")
raise Exceptions::ErrorResolvingLink.new("Cannot resolve link #{link}.")
end
end
(예 @doc는 임시 파일 객체가 아닌 Hpricot을 문서 객체 임) Hpricot을 블록으로 잘 작동하지 않는 것 다음 코드를 사용하려면 어떻게 코드의 두 번째 버전을 사용할 수 있습니까?
질문과 관련이 없지만'def'의 즉각적인 환경에서'rescue'를 떠나는'begin'과'end'를 생략 할 수 있습니다. – sawa
@sawa : OTOH,'begin'은 여러분이 약간의 예외 처리를하려고하는 멋진 시각적 표시이며 독자는주의를 기울여야합니다. –
@mu는 너무 짧아서 보통'def '와 같은 들여 쓰기 수준과 그에 상응하는'end'에서'rescue'를 가져옵니다. 그래서'rescue'가 충분합니다. '구조 (rescue) '를 만날 때마다, 오류가 발생했을 때 그 이상의 것을 말할 수 있습니다. – sawa