2

在Visual Studio 2010中,是否可以防止第一次機會異常寫入輸出窗口?我們有一個場景,其中有很多失敗的強制轉換,並且在調試時輸出窗口確實會減慢應用程序的運行速度。寫出類型爲「System.InvalidCastException」的第一次機會異常發生......反覆使用需要很長時間。在Visual Studio中的控制檯不是快速的:<)防止輸出窗口中出現第一次機會異常

我知道的選項不打破一次機會異常,但這似乎不影響輸出窗口。無論這是否是減緩我們失望的區域之前把這個:

Debug.Listeners.Clear() 

關閉輸出窗口也於事無補。儘管它在發佈模式下運行速度非常快。

任何幫助表示讚賞!

+4

右鍵單擊輸出窗口並取消選中「異常消息」。這就是你所要求的,但沒有達到你所希望的。只有'as'操作員纔會這樣做。 –

+1

看來這裏的問題是比控制檯輸出速度更多的異常數量。無效的轉換異常可以通過在轉換之前檢查類型來防止。我真的很想知道爲什麼這是「通過設計」,並且你不是在試圖投射物體之前檢查類型的原因。 – Iridium

+0

@銥 - 感謝您的評論。你讓我思考,我只是使用與TryParse相同的模式,但與TryCast結束。我將在答案中發佈相關代碼。 –

回答

4

我可以回答這個問題的Visual Studio 2013:

在VS 2013,你可以去調試菜單 - 選項和設置... - 調試 - 輸出窗口。 在「常規輸出設置」下找到「異常消息」。把它關掉。

+0

同VS2010 btw – dlchambers

0

Per @ Iridium的評論,我最終改變爲一個Try模式,並返回一個布爾作爲成功標誌,而不是拋出一個InvalidCastException。看起來很像是:

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」 成爲三個快速擴展:

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; 
} 

謝謝!

相關問題