WPF异常未得到处理

时间:2014-10-22 04:42:14

标签: c# wpf

您好我有一个Usercontrol,它有一个带有' ValidatesOnExceptions'的文本框。设为真

<TextBox.Text>
    <Binding ElementName="_this"
             Path="VisibleValue"
             UpdateSourceTrigger="PropertyChanged"
             Mode="TwoWay"
             ValidatesOnExceptions="True">
    </Binding>
</TextBox.Text>

在代码隐藏中我有代码,它会尝试将输入转换为int,double ...

private void SetValue(String visibleValue)
    {
        Object value = null;

        if (!String.IsNullOrEmpty(visibleValue)) {
            TypeCode typeCode = Type.GetTypeCode(Type);

            try {
                switch (typeCode) {
                    case TypeCode.Byte: {
                            Byte outValue = Byte.Parse(visibleValue, CultureInfo.InvariantCulture);
                            value = outValue;
                            break;
                        }
                    case TypeCode.Decimal: {
                            Decimal outValue = Decimal.Parse(visibleValue, CultureInfo.InvariantCulture);
                            value = outValue;
                            break;
                        }
                   }
            }

            catch (Exception ex) {
                if (value == null) {
                    HasValidValue = false;
                }
                else {
                    HasValidValue = true;
                }
                throw ex;
            }
        }

        Value = value;
        if (Value == null) {
            HasValidValue = false;
            throw new ArgumentNullException("Input text was null.");
        }
        else {
            HasValidValue = true;
        }
不要因为尝试而感到困惑。我再次抛出了这个例外。我不明白的事情是:当Parse方法抛出一个异常它被处理时,我的程序继续运行,文本框将得到一个红色边框。

但是&#39; ArgumentNullException&#39;我进一步向下扔没有得到处理。任何人都可以向我解释这个问题吗,并且如果在这个地方值为null,那么我是否可以获得相同的红色边框,就像Parse方法抛出异常一样?

提前致谢

编辑:如果我抛出FormatException而不是ArgumentNullException,一切正常。那是为什么?

0 个答案:

没有答案