IT TIP

모범 사례 : Try vs Rescue

itqueen 2020. 10. 29. 20:17
반응형

모범 사례 : Try vs Rescue


모범 사례는 무엇입니까? 사용 try하거나 사용하려면 rescue?

user.try(:email)

VS

user.email rescue nil

post.try(:comments).try(:first).try(:author)

VS

post.comments.first.author rescue nil

이들 중 사용하는 데 차이가 있습니까?


시도와 구조는 다른 목적으로 사용됩니다. 의 목적은 try다음을 수행하지 않아도되는 것입니다.

if user && user.email

또는 부모 객체가 nil 일 수있는 상황에서 NilClass에 NoMethodError가 발생합니다. 의 목적은 rescue메서드 호출에 의해 throw되는 예외를 처리 하는 것입니다 . 호출 user.email에서 예외가 예상되는 경우 rescue nil예외가 버블 링되지 않도록 방지 할 수 있습니다 .

일반적으로 rescue nil다른 예외를 구할 수 있기 때문에 어떤 예외를 구하고 있는지 명시 적으로 알지 못하면 사용을 피하고 ,이를 rescue nil볼 수 없기 때문에 절대 알 수 없습니다. 최소한 기록 할 수 있습니다.

begin
  ...some code...
rescue => ex
  logger.error ex.message
end

둘 다 비린내처럼 보이고 다른 버그를 가릴 수 있습니다. 정말로 거기에서 아무것도 원하지 않습니까? 먼저 주석이 있는지 확인하고 빈 케이스를 명시 적으로 덮는 것이 더 좋을까요?


Nothing is Something 은 @AdamByrtek이 자리를 잡은 이유와 실패한 사례를 더 똑똑하고 객체 지향적 인 방식으로 표시해야하는 이유를 이해하는 데 도움이되는 Sandi Metz의 훌륭한 강연입니다.x ? y : nil

참고 URL : https://stackoverflow.com/questions/6063347/best-practice-try-vs-rescue

반응형