차라리 다음과 같이 작성하십시오.
@hsh[foo][bar] || raise ("custom error")
그러나 @hsh [foo]가 없을 때 NoMethodError가 호출됩니다.
차라리 다음과 같이 작성하십시오.
@hsh[foo][bar] || raise ("custom error")
그러나 @hsh [foo]가 없을 때 NoMethodError가 호출됩니다.
예외를 저장하려면 rescue
이 필요하지만 코드에 아무 것도 저장하지 않아도됩니다. ||
은 nil
에 반응합니다.
이 작업을 할 수 있습니다 : 그것은 선호하는 것
@hsh.fetch(foo, {})[bar] || raise("custom error")
이 가능한 모든 경우에 예외를 유발하지 않도록,하지만 당신은 항상 당신이 밖으로 구출 할 수있는 인라인 블록을 만들 수 있습니다
begin
@hsh[foo][bar]
rescue
raise ("custom error")
end
@hsh[foo]
을 []
메서드가없는 nil
을 반환합니다. 보십시오이 하나
@hsh[foo] && @hsh[foo][bar] || raise("custom error")
나는이 간단한 변화라고 생각합니다 : printf와 디버깅, 나는 종종있을 때
@hsh[foo][bar] rescue raise ("custom error")
하는'인상 "# {bar.inspect}을 (를) 찾을 수 없습니다"', 또는 'raise "# {@ hsh.fetch (foo) .keys.inspect}"에서 # {bar.inspect}를 찾을 수 없습니다. –