우리 회사에서는 시스템이 3 개의 레이어를 갖도록 설계되었습니다. Layer1은 비즈니스 로직 처리를 담당합니다. Layer3은 백엔드 시스템을 호출합니다. Layer2는 두 레이어 사이에 위치하므로 layer1은 백엔드 시스템에 대해 알 필요가 없습니다. layer3에서 정보를 중계하려면 layer2가 layer1에 대한 인터페이스를 정의해야합니다.메쏘드 리턴 타입
예를 들어, layer1은 사용자의 PIN이 올바른지 확인하려고합니다. 그것은 layer2 checkPin() 메소드를 호출 한 다음 layer2가 관련 백엔드 시스템을 호출합니다. checkPin() 결과는 correctPin, inCorrectPin 및 internalError 일 수 있습니다. 현재 우리는 반환 유형 'int'를 정의했습니다. 따라서 layer2가 0을 반환하면 correctPin을 의미합니다. 1이 반환되면 inCorrectPin을 의미합니다. 9가 반환되면 internalError를 의미합니다.
작동합니다. 그러나 나는이 접근에 대해 약간 불안하다. 더 좋은 방법이 있습니까? 예를 들어 열거 형 CheckPinResult {CORRECT_PIN, INCORRECT_PIN, INTERNAL_ERROR}을 정의하고 CheckPinResult 유형을 반환 하시겠습니까?
감사합니다, 사라
각 레이어에서 예외를 사용하십시오. 레이어가 실패하면 해당 예외를 catch합니다. 그렇게하면 어떤 계층이 실패했는지 알 수 있습니다. 제안이기 때문에 답변으로 게시하지 않은 이유는 무엇입니까? –
네, 요점이 있습니다. 우리가 현재하고있는 일은 내부 오류 일 때 오류를 기록하는 것입니다. 예외가있는 경우이를 포착하여 layer1에 기록합니다. Layer2 및 Layer3은 상위 레이어로 에스컬레이션합니다. – sarahTheButterFly
엘리트는 각 레이어에서 사용자 지정 예외를 만드는 것이 무엇이라고 생각합니다. 이것은 비즈니스 예외이며 이것이 우리가하는 일입니다. 또한 API를 사용하여 레이어를 사용하면 외부 개발자가 오류를 처리 할 수 있습니다. –