2012-10-04 5 views
3

일부 매개 변수와 함께 호출 할 때 무시할 수있는 예외를 throw하는 일부 외부 코드를 사용하고 있습니다. 불행히도 나는이 외부 코드를 여러 가지 이유로 변경할 수 없다.생성 된 코드를 피하십시오.

[DebuggerStepThrough] 
    public static bool TryGetXXX(string input, out string output) 
    { 
     try 
     { 
      output = MethodThatSometimesFails(input); 
      return true; 
     } 
     catch 
     { 
      output = null; 
      return false; 
     } 
    } 

    private static string MethodThatSometimesFails(string input) 
    { 
     // Don't want this to cause a break 
     // but can not put the attribute on this method 
     throw new Exception("couldnt deal with your request"); 
    } 

불행하게도하지만, 외부 코드는 여전히 MethodThatSometimesFails 내부 예외에 중단됩니다

내가 이렇게 보이는 래퍼 방법을 만들었습니다. [DebuggerStepThrough]은 위의 코드를 디버깅하는 것을 피할 수 있지만 호출 된 코드는 계속 throw됩니다.

내가 원하는 것은 코드가 "예외 ..."창에있는 모든 확인란을 선택하더라도 실행된다는 것입니다. 이것을 할 수있는 속성이 있습니까?

속성이 없으면 이러한 클래스/메소드가 포함 된 프로젝트를 만들고 전체 프로젝트를 제외 할 수 있습니다. 이것을 할 수있는 방법이 있습니까?

+0

예외가 AppDomain 설정을 통과 할 때 도구 -> 옵토인 -> 디버깅 -> 중단은 어떻게됩니까? http://social.msdn.microsoft.com/Forums/en-US/csharpide/thread/a4c32d57-9046-41c4-bf8b-3718ff474847/ –

+1

디버거 구성 설정 인 Debug + Exceptions, Thrown 확인란 때문에이 문제가 발생합니다. 할 수있는 일은 없지만 그 체크 박스를 해제하십시오. –

+0

이 메서드 외부에있는 다른 예외를 throw하고이를 볼 수있게하려면 throw 된 체크 상자를 해제하지 않는 것이이 질문의 목적입니다. 개발자로서 개발 단계에서 코드의 일부에 예외가 발생하는지 항상 알고 싶습니다. 오류의 원인은 ApplicationException이므로이 항목을 선택 취소하여 제한해야하는 범위가 상당히 넓습니다. – Blueberry

답변

0

유효한 매개 변수가 무엇인지 알면 함수를 호출하기 전에 매개 변수를 확인하십시오. 유효하지 않은 경우 함수를 호출하지 마십시오.

비용이 많이 드는 예외에 대한 의존성을 제거하고 낙관적 인 자세를 취하십시오. DebuggerNonUserCodeAttribute

+0

제 이해는 OP가 할 수 없다는 것입니다. 그는 예외를 용인해야하는이 상황을 다루려고 노력하고 있습니다. – usr

+0

@usr 나는'TryGet ... '메소드를 의미합니다. –

+0

감사합니다. Daniel, 불행히도이 방법을 통해 호출되는 전체 라이브러리가 있으며 유효하고 무엇이 아닌지를 아는 것은 라이브러리의 작업입니다. 불행히도 TryGet이 제공하지 않습니다. – Blueberry

1

한번에 표시 방법 또는 클래스는 이것에 대한 해결책을 찾을 수 없습니다. 결국 유일한 대안은 TryGet을 다른 DLL에 넣는 것입니다!

+0

불행히도 같은 문제가 발생했습니다. – Blueberry

+0

Visual Studio에서 도구 -> 옵션 -> 디버깅 -> 일반 -> 내 코드 만 활성화 옵션 상태 확인 – STO

+0

확인 ... – Blueberry

관련 문제