반응형
모범 사례 : 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
반응형
'IT TIP' 카테고리의 다른 글
Javadoc : HTML 태그없이 줄 바꿈? (0) | 2020.10.29 |
---|---|
Google Maps API V3 : A 지점에서 B 지점 (파란색 선)까지의 방향을 어떻게 표시하나요? (0) | 2020.10.29 |
치명적 : git 저장소로 보이지 않음 (0) | 2020.10.29 |
git-tf와 git-tfs의 차이점은 무엇입니까? (0) | 2020.10.29 |
Chrome 확장 프로그램 : 백그라운드에서 콘텐츠 스크립트로의 sendMessage가 작동하지 않음 (0) | 2020.10.29 |