2011-05-09 5 views

답변

2

예외를 저장하려면 rescue이 필요하지만 코드에 아무 것도 저장하지 않아도됩니다. ||nil에 반응합니다.

이 작업을 할 수 있습니다 : 그것은 선호하는 것

@hsh.fetch(foo, {})[bar] || raise("custom error") 
+1

하는'인상 "# {bar.inspect}을 (를) 찾을 수 없습니다"', 또는 'raise "# {@ hsh.fetch (foo) .keys.inspect}"에서 # {bar.inspect}를 찾을 수 없습니다. –

0

이 가능한 모든 경우에 예외를 유발하지 않도록,하지만 당신은 항상 당신이 밖으로 구출 할 수있는 인라인 블록을 만들 수 있습니다

begin 
    @hsh[foo][bar] 
rescue 
    raise ("custom error") 
end 
0

@hsh[foo][] 메서드가없는 nil을 반환합니다. 보십시오이 하나

@hsh[foo] && @hsh[foo][bar] || raise("custom error") 
1

나는이 간단한 변화라고 생각합니다 : printf와 디버깅, 나는 종종있을 때

@hsh[foo][bar] rescue raise ("custom error") 
관련 문제