2017-11-20 12 views
0

나는 루비 초보자이며 질문이 하나 있습니다.루비의 상태 인 경우 "구조용 거짓"이란 의미는 무엇입니까

if (new_account.save rescue false) 
    # when account save success 
else 
    # when account save has error 
end 

이 코드에서 어떤 구조용 오류가 발생했는지 확실하지 않습니다. 감사

+0

이것은 당신이 쓸데없는 코드베이스를 가지고 있음을 의미합니다 ... –

+0

https://stackoverflow.com/a/1542703/525478 –

+0

완벽한 속임수는 아니지만 가까운 .... –

답변

2

한 줄의 구조 그래서 코드가 꽤 많이이

result = nil 
begin 
    result = new_account.save 
rescue 
    result = false 
end 

if result 
    # when account save success 
else 
    # when account save has error 
end 

와 동일한 문법 설탕

foo.bar rescue false 
# same as 
begin 
    foo.bar 
rescue 
    false 
end 

rescue falsenew_account.save 안에 던져 예외가 처리되는 것을 의미 돌려주는 것과 같음 false. 내 의견으로는, 이것은 나쁜 디자인입니다. new_account은 분명히 두 가지 다른 실패 사례를 갖도록 설계되었지만 호출 코드가이를 무시합니다. 이 코드는 저장 메소드 내에서 발생하는 실제 버그를 숨길 가능성이 큽니다.