2010-03-04 2 views
0

훌륭한 프로그래머이자 코드 리뷰어로서, 개발자가 "Exception"을 잡는 것을 보았을 때 나는 항상 울적합니다. C#에서 Java의 "throws"절을 추가 할 것을 제안했지만 Anders Hejlsberg 인터뷰 (http://www.artima.com/intv/handcuffs.html)를 읽은 후에 왜 그곳에 없는지 알 수 있습니다.C#에서 canthrow 문을 얻을 수 있습니까?

대신 캔버스 성함을 제안하고 싶습니다. canthrow 문은

  1. canthrow 문이 방법에 선언 될 것이다 다음과 같은 속성을 가지고 있으며이 방법이 발생하는 예외를 나열합니다.
  2. canthrow는 호출 할 수있는 메소드가 throw 할 수 있고 로컬에서 처리 할 수없는 예외는 물론 던져 질 수있는 예외를 호출 메소드 또는 Intellisense에보고합니다.
  3. 캔버스는 이 아니며이 아니므로 버전 관리에 문제가 없습니다.

여기에있는 아이디어는 대부분의 개발자가 적절한 예외를 잡아서 처리하기를 원하지만 실제로 무엇인지 모릅니다. 디자인 타임에 메서드를 검사 할 수있는 방법이 있으면 개발자는 관련있는 예외를 추가하고 처리하고 처리되지 않은 예외를 버릴 가능성이 커집니다.

이제 마지막 생각으로, 리플렉션을 사용하여 Intellisense가이 모든 작업을 수행 할 수 있다고 말하면서 가능한 모든 예외를 반환합니다. 이 위기는 도서관 개발자가 발신자가 처리 할 것으로 예상되는 예외 사항을 강조하도록 허용 할 것입니다.

당신은 어떻게 생각하십니까?

답변

1

이 메서드는 일반적으로 다른 예외를 throw하지 않을 보장 할 수 없기 때문에 당신이 설명서 위에 무엇을 구입하는지 모르겠습니다. 예를 들어 스레드가 중단되는 경우를 생각해보십시오.

8

이것은 이미 어느 정도까지 <exception> documentation comment tag의 형태로 제공됩니다. FxCop 인트로 스펙 션과 같은 것을 사용하여 호출 트리를 검사하여 더 자세히 파고들 수는 있지만 가상 메소드가 포함되면 신속하게 지저분해질 수 있습니다.

편집기 통합과 관련하여 Resharper에서 Visual Studio에서 지원하는 것보다 더 나은 행운을 요구할 수 있습니다.

관련 문제