문제

HTML 도움말 파일을 생성 할 수 있도록 주석으로 C# 코드를 장식하고 있습니다.

나는 종종 인터페이스를 선언하고 문서화합니다. 그러나 이러한 인터페이스를 구현하는 클래스는 구현에 따라 구체적인 예외를 던질 수 있습니다.

때로는 클라이언트가 사용하는 인터페이스 만 알고 있습니다. 구현자가 던질 수있는 가능한 예외를 추가하여 인터페이스를 문서화해야합니까?

인터페이스 구현자가 프레임 워크 대신이를 던지도록 사용자 정의 예외를 작성/문서화해야합니까?

나는 이것이 분명하기를 바랍니다!

감사

2010 년 1 월 4 일 편집 : 이에 대한 블로그 게시물을 작성하기로 결정했습니다. http://blog.mikecouturier.com/2010/01/creating-custom-exceptions-in-net-right.html

도움이 되었습니까?

해결책

나는 당신의 질문을 완전히 이해했는지 확실하지 않습니다 (그리고 나는 C# Developer가 아닌 Java입니다), 본질적으로 다형성 문제가 무엇인지 묻는 것 같습니다. 누군가가 던지라고 선언 된 인터페이스에서 방법을 사용하는 경우 X와 Y, 구현이 Z를 던지면 어떻게됩니까?

따라야 할 한 가지는 적합의 원리입니다.이 하위 유형은 슈퍼 유형의 행동을 준수해야한다고 본질적으로 말합니다. 즉, 인터페이스의 메소드가 한 유형 (예 : NULL 포인터 예외)의 예외 만 던질 수 있다고 문서화하는 경우, 발신자와의 계약은 이것이 그들이 감시해야 할 유일한 것입니다. 당신이 다른 것을 던지면, 당신은 그들을 놀라게 할 수 있습니다.

슈퍼 타입의 특정 하위 유형에 대한 문서화는 불필요한 커플 링을 생성하기 때문에 좋은 생각이 아닙니다. 나는이 구현이 선언과 다르게 행동 할 수 있다는 사실에 대해 더 우려 할 것이다. 왜냐하면 그것은 선언이 충분하지 않다는 것을 암시 할 수 있기 때문이다.

방법이 던질 수있는 모든 유형의 예외가 무엇인지 생각해보십시오. 그들을 위해 초형을 생성 한 다음 인터페이스 방법을 명시 적으로 선언합니다 (예 :이 방법은 "계산 예외"를 던질 수 있습니다). 그런 다음 구현에서 더 자세한 내용이있는 계산 예외를 던지거나 구현과 관련된 계산 예외의 일부 하위 유형을 던지면 여전히 준수합니다.

다른 팁

나는 URI가 말한 모든 것에 동의합니다 - 당신은 필요한 경우 확장 할 수있는 현명한 사용자 정의 예외를 만들면 인터페이스에 입력 된 매개 변수를 사용하는 메소드가 해당 예외를 포착 할 수 있으며 서브 타입 예외도 포착 할 수 있습니다.

오류 조건을 설명하는 기존 .NET 프레임 워크 예외가있는 경우 불필요하게 생성하지 마십시오.

구현자를위한 문서화 측면에서 주석의 비고 섹션 (XML 주석을 사용한다고 가정)을 사용하여 구현자가 할 예정인 방법과 같은 것들을 설명 할 수 있습니다. 분명히 이것은 결코 시행 할 수 없지만 개발자가 API를 사용하는 경우 유용한 지침으로 사용될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top