C #에서 엔터프라이즈 프로젝트에 대한 오류 코드 패턴을 만드는 모범 사례 [닫기] 될 엔터프라이즈 프로젝트를 진행하고 있습니다.

많은 중소기업과 기업에 배포 될 엔터프라이즈 프로젝트를 진행하고 있습니다.
이 프로젝트에 대한 지원은 어려움을 겪고 있으므로 HTTP 상태 코드와 같은 오류에 대한 코딩 패턴을 만들고 싶습니다 . 이를 통해 헬프 데스크 직원은 가능한 빨리 문서를 참조하고 문제를 해결할 수 있습니다.

이를위한 모범 사례와 권장 사항은 무엇입니까?
이 작업을 수행하는 데 도움이 될 것입니다.



답변

오류 코드와 오류 반환 값에는 차이가 있습니다. 오류 코드는 사용자 및 헬프 데스크를위한 것입니다. 오류 반환 값은 코드에 오류가 발생했음을 나타내는 코딩 기술입니다.

오류 반환 값을 사용하여 오류 코드를 구현할 수는 있지만 이에 대한 조언을 드리겠습니다. 예외는 오류를보고하는 현대적인 방법이므로 오류 코드를 포함하지 않아야 할 이유가 없습니다.

이것이 내가 구성하는 방법입니다 (2-6 점은 언어에 구애받지 않습니다).

  1. 추가 ErrorCode특성 과 함께 사용자 정의 예외 유형을 사용하십시오 . 메인 루프의 catch는이 필드를 일반적인 방식으로보고합니다 (로그 파일 / 오류 팝업 / 오류 응답). 모든 코드에서 동일한 예외 유형을 사용하십시오.
  2. 1에서 시작하지 말고 선행 0을 사용하지 마십시오. 모든 오류 코드를 같은 길이로 유지하면 잘못된 오류 코드를 쉽게 찾을 수 있습니다. 일반적으로 1000에서 시작하면 충분합니다. 어쩌면 사용자가 명확하게 식별 할 수 있도록 선행 ‘E’를 추가 할 수 있습니다 (특히 지원 데스크에서 사용자에게 오류 코드를 발견하는 방법을 지시해야 할 때 유용함).
  3. 모든 오류 코드 목록을 유지하되 코드 에서이 작업을 수행하지 마십시오 . 새 코드가 필요할 때 쉽게 편집 할 수있는 개발자 용 위키 페이지에 짧은 목록을 유지하십시오. 헬프 데스크에는 자체 위키에 별도의 목록이 있어야합니다.
  4. 오류 코드에 구조를 적용하지 마십시오. 분류하기 어려운 오류가 항상 있으며 오류가 45xx 그룹 또는 54xx 그룹에 있는지 여부를 몇 시간 동안 논의하고 싶지 않습니다. 실용적 입니다.
  5. 코드의 각 던지기에 별도의 코드를 할당하십시오. 같은 원인이라고 생각하더라도 헬프 데스크는 상황에 따라 다른 작업을 수행해야 할 수도 있습니다. 사용자가 자신이 잘못한 것을 고백하도록하는 것보다 위키에 “E1234 : See E1235″가있는 것이 더 쉽습니다.
  6. 헬프 데스크에서 요청하면 오류 코드를 분할하십시오. if (...) throw new FooException(1234, ".."); else throw new FooException(1235, "..");코드 의 간단한 줄은 헬프 데스크에 30 분을 절약 할 수 있습니다.

오류 코드의 목적은 헬프 데스크의 삶을 편하게 만드는 것임을 잊지 마십시오 .


답변

먼저 오류가 발생할 수 있고 사용자가 볼 수있는 영역을 분리해야합니다. 그런 다음 문서화 할 수 있습니다. 간단합니다.

글쎄, 이론 상으로는 간단합니다. 실제로 오류가 발생할 수있는 곳에서 오류가 발생할 수 있으며,이를보고하면 멋진 코드를 로깅, 예외 발생 및 처리, 반환 값 전달의 괴물로 바꿀 수 있습니다.

그런 다음 2 단계 접근 방식을 권장합니다. 먼저, 로트 및 로트를 로그, 로그하는 것입니다.

두 번째는 주요 구성 요소 및 해당 인터페이스를 결정하고 이러한 구성 요소가 발견 할 수있는 주요 오류 사례를 정의하는 것입니다. 그런 다음 이러한 오류 중 하나가 발생하면보다 눈에 잘 띄는 방식으로 로그인 할 수 있습니다 (오류를 내부적으로 처리하는 방법은 사용자에게 달려 있음) -예외 또는 오류 코드는 여기서 차이가 없습니다.) 그러면 사용자는 일반적으로 오류를보고 자세한 정보를 보려면 로그로 이동합니다.

웹 서버 및 http 오류 코드 예제에도 동일한 방법이 사용됩니다. 사용자가 404를보고이를 지원한다고보고하면 진행 상황, 방문한 페이지,시기 및 기타 정보가있는 곳에서 자세한 정보를 로그에서 확인할 수 있습니다. DB, 네트워크 또는 응용 프로그램에 있어야합니다.


답변

나는 설명적인 이름과 명확한 메시지로 사용자 정의 예외를 처리하고 던질 것입니다. 오류 코드를 전달하고 해석하는 지원을 빌드하는 것보다 언어의 기존 예외 인프라를 사용하는 것이 훨씬 쉽습니다.