防止输出窗口中的第一次机会异常

时间:2012-06-05 17:40:24

标签: visual-studio-2010 debugging tracelistener first-chance-exception

在Visual Studio 2010中,是否可以防止第一次机会异常写入“输出”窗口?我们有一个场景,其中有许多转换被设计失败,并且输出窗口在调试时实际上减慢了应用程序的速度。写出一个'System.InvalidCastException'类型的第一次机会异常发生...一遍又一遍只需要很长时间。 Visual Studio中的控制台速度不快:<)

我知道不会破坏第一次机会异常的选项,但这似乎不会影响输出窗口。也没有把它放在使我们放慢速度的区域之前:

Debug.Listeners.Clear()

关闭“输出”窗口也没有帮助。它在发布模式下运行速度非常快。

感谢任何帮助!

2 个答案:

答案 0 :(得分:4)

我可以为Visual Studio 2013回答这个问题:

在VS 2013中,您可以转到DEBUG菜单 - 选项和设置... - 调试 - 输出窗口。 在“常规输出设置”下,您会找到“异常消息”。把它关掉。

答案 1 :(得分:0)

根据@Iridium的评论,我最终改为Try模式并返回bool作为成功标志而不是抛出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;
}

谢谢!