2013-09-05 2 views
3

구조의 개념을 이해합니다. 제 질문은구조대를 수업 시간에 작성 하시겠습니까?

입니다. 내 begin rescue end 코드를 수업 시간에 작성해야합니까? 아니면 실제로 객체를 만들 때 클래스 외부에 작성해야합니까? 수업에 하나씩 두 개의 파일이있는 경우, 그 클래스를 호출하는 스크립트는 어떤 스크립트에 구조 스크립트를 넣을 수 있습니까? 아마 그것은 중요하지 않거나 어쩌면 둘 다 사용해야합니다. 그냥 최선의 관행이 무엇인지 궁금해 ...

+0

자신에게 물어보십시오 : 수업 중에'구조 '를한다면, 구조 활동은 무엇입니까? 그 질문에 대한 답은 당신이 논리적 인 장소가 어디 일지를 결정하는 데 도움이 될 수 있습니다. 응용 프로그램에 따라 예외 처리를 다르게하려면 클래스 외부에서 처리해야합니다. – lurker

답변

4

예외 처리를하는 일반적인 규칙은 가장 낮은 추상화 수준에서 예외를 잡아서 오류를 처리하는 방법을 지능적으로 선택할 수있는 곳입니다.

클래스 방법에서 현명한 선택을 할 수 있다면 구조 논리를 포함 시키십시오. 호출자 수준에서 더 많은 컨텍스트를 가지며 메서드가 호출 될 때마다 사용자 지정 논리를 원할 경우 클래스 외부에 구조 논리를 배치하십시오.

0

beginrescue을 기본 인상 행동 (예 : 코드를 종료하고 더 높은 수준의 구조가 아닌 한 프로세스를 종료 할 수 있음)을 변경하려는 특정 코드 주위에만 넣는 것이 가장 좋습니다. 당신이 의도 한 목적.

그 이유는 처음에 begin...rescue 절이 필요한 이유에 따라 다릅니다.

예를 들어, 클래스가 웹 서비스이고 해당 서비스의 구성 요소이고 블록의 목적이 발생한 모든 오류를 브라우저의 디버그 스택 추적으로 표시하는 경우 외부 웹 서비스 계층은 예외를 구해야하는 곳입니다. 가능한 대부분의 제기 된 오류 유형도 모두 포함해야합니다.

"내부"클래스가 타사 서비스에 대한 액세스를 제공하고 실패한 연결에 대한 재 시도를 허용하는 경우 블록은 완전히 내부 클래스 내에있을 수 있습니다. 또한 재 시도가 적합한 특정 오류는 rescue뿐입니다.

관련 문제