문제

다른 팀 구성원의 다양한 솔루션 프로젝트에서 참조로 사용할 "공통"라이브러리를 만들고 있습니다. 방법은 일반적으로입니다 void 실제 반환 된 데이터가없는 기능.

나는이 방법들의 사용을 강요 할 이유를 찾고 있습니다. Try...Catch 다른 사람들에 의해 차단. 오류가 올바르게 처리되어 있는지 확인해야합니다. 부울 반환 유형에 의존하는 것에 대해서는 오류 메시지를 반환 할 수는 없으므로 유일한 옵션은 Exception.

적절한 강제력이 불가능한 경우 개발자에게 시도/캐치 요구 사항에 대해 경고하기 위해 컴파일 할 때 팝업하는 속성을 어떻게 만들 수 있습니까? (일종의 Obsolete 기인하다).

다른 더 나은 접근 방식이 있습니까?

편집하다:

내 전체 시나리오는 다음과 같습니다.

원격으로 값을 업데이트하기 위해 웹 서비스를 호출하는 코드 방법이 있습니다. 업데이트는 매우 중요합니다. 자체가 잘 작동하지만 웹 서비스에 도달 할 수없는 경우 어떻게해야합니까? 통화는 값을 반환하지 않습니다.

도움이 되었습니까?

해결책

내부에 무언가를 배치합니다 try/catch 블록은 그것을 "제대로 처리"하지 않습니다. 대다수 예를 들어, 예외를 처리하는 올바른 방법은 다음 단계로 거품을 일으키는 것입니다. 경고: try/finally 자원 정리를 허용하기 위해 훨씬 더 일반적이지만 그보다 더 일반적입니다. using.

코드에서 "올바르게 사용해야합니다"를 시행 할 수 없습니다. 그것은 모든 API에 암시 적이며, 당신은 단지 자극과 성가심을 일으키고 사람들을 부적절하고 도움이되지 않는 코딩 스타일로 강요하면서 완전히 인공적이고 부정확합니다 코드가 정확하다는 의미.

코드가 올바르게 작동하는지 확인하려면 테스트하십시오.

이 시나리오에서 사용할 수있는 속성은 없습니다. 당신은 아마도 FXCOP 규칙을 만들 수 있지만 위의 이유는 다음과 같습니다. 권장하지 않습니다.

다른 팁

나는 실제로 이것을하지 않을 것이지만, 언급 된 문제에 대한 펀 솔루션으로서 당신은 자신의 예외 유형을 구축 할 수 있습니다 : 성공률. 그런 다음 방법 끝에이 예외를 던져 성공을 나타냅니다. 이것은 어떤 형태의 시도/캐치 없이이 방법을 거의 사용할 수 없게 만듭니다. 그러나 다시 : 이것을하지 마십시오.

사용자 정의 결과 클래스를 반환 할 수 있습니다.

public class Result
{
    public bool Okay { get; set; }
    public string Error { get; set; }
}

그 다음에:

var result = AttemptSomething();

if (!result.Okay)
{
    Console.WriteLine(result.Error);
}

아니면 돌아올 수도 있습니다 string:

var error = AttemptSomething();

if (!String.IsNullOrEmpty(error))
{
    Console.WriteLine(error);
}

또는 오류가 아웃으로 표시됩니다.

string error;
if (!AttemptSomething(out error))
{
    Console.WriteLine(error);
}

또는 반환 Exception 하지만 ~하지 않다 던지다.

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