2

Visual Studio 2010에서는 첫 번째 예외가 출력 창에 쓰지 않도록 할 수 있습니까? 우리는 디자인에 실패한 많은 캐스트가있는 시나리오를 가지고 있으며 출력 창은 디버깅 할 때 응용 프로그램을 실제로 느리게 만듭니다. 쓰기 'System.InvalidCastException'유형의 첫 번째 예외가 발생했습니다 ... 반복해서 오랜 시간이 걸립니다. Visual Studio의 콘솔이 빠르지 않습니다. <)출력 창에서 첫 번째 예외 발생 방지

첫 번째 예외가 발생하지 않도록 옵션을 알고 있지만 출력 창에 영향을 미치지 않습니다.

Debug.Listeners.Clear() 

출력 창을 닫으면 도움이되지 않습니다. 그것은 릴리스 모드에서 매우 빠르게 실행됩니다.

도움을 주시면 감사하겠습니다.

+4

출력 창을 마우스 오른쪽 단추로 클릭하고 "예외 메시지"의 표시를 해제하십시오. 그것은 당신이 요구하는 것을 수행하지만 당신이 바라는 것을하지는 않습니다. 'as '연산자 만이 그렇게 할 것입니다. –

+1

여기에있는 문제는 콘솔 출력 속도보다 많은 예외가있는 것으로 보입니다. 잘못된 캐스트 예외는 캐스트 이전에 유형을 검사하여 예방할 수 없습니다. 나는 이것이 "설계 상"인 이유와 객체를 형 변환하기 전에 유형을 확인하는 것이 아니라는 이유를 진정으로 알고 있습니다. – Iridium

+0

@ 이리듐 - 의견을 주셔서 감사합니다. 당신은 나에게 생각을하게했고, 나는 TryParse와 같은 패턴을 사용했지만 TryCast는 사용하지 않았다. 나는 관련 코드를 답안에 올릴 것이다. –

답변

4

내가 비주얼 스튜디오 2013이 응답 할 수 있습니다 :

VS 2013 년에는 DEBUG 메뉴로 이동할 수 있습니다 - 옵션 및 설정 ... - 디버깅 - 출력 창. "일반 출력 설정"에서 "예외 메시지"를 찾습니다. 끄세요.

+0

동일 함 VS2010 btw – dlchambers

0

Per @ Iridium의 의견에 따라 Try 패턴으로 변경하고 InvalidCastException을 throw하는 대신 성공 플래그로 부울을 반환합니다. 보이는이 같은 많은 :

public static bool CanAssignValue(this PropertyInfo p, object value) 
{ 
    return value == null ? p.IsNullable() : p.PropertyType.IsInstanceOfType(value); 
} 

public static bool IsNullable(this PropertyInfo p) 
{ 
    return p.PropertyType.IsNullable(); 
} 

public static bool IsNullable(this Type t) 
{ 
    return !t.IsValueType || Nullable.GetUnderlyingType(t) != null; 
} 

감사 :

if (!property.CanAssignValue(valueToSet)) 
{ 
    Debug.Write(string.Format("The given value {0} could not be assigned to property {1}.", value, property.Name)); 
    return false; 
} 
property.SetValue(instance, valueToSet, null); 
return true; 

는 "CanAssignValue는"세 가지 빠른 확장되었다!

관련 문제