WPF IValueConverter错误处理的最佳实践是什么?

时间:2010-03-16 10:59:37

标签: wpf ivalueconverter

应该实现两个功能,我想知道我需要对输入做什么类型的验证以及如何管理错误。

Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert

End Function

Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack

End Function

我需要检查的类型和参数的类型是否符合我的期望。

如果他们不是,我应该什么也不返回,并在另一个地方发现错误的行为?或者我应该在这里抛出异常或断言?

这里有适用的最佳或建议的做法吗?

2 个答案:

答案 0 :(得分:5)

我个人检查类型和值,然后转换它。如果由于任何原因无法转换,那么我只需返回value未转换。我不会抛出任何异常或进行任何记录 - 大多数情况下很容易看到转换是否失败,因为您没有在UI中看到预期的项目。转换器中的记录错误可能非常昂贵,因此我可以避免它。

数据绑定(通常)无声地失败(我已经在Silverlight中使用转换器绑定了一次非常大的拟合),你可以检查Output窗口中的任何错误,并且很容易敲击一个条件断点。如有必要,转换器可以调试任何问题。

答案 1 :(得分:0)

我只是想知道为什么你需要在转换器中捕获异常?你有一个例子吗?

在我看来应该没有必要这样做,并且对于像可空类型这样的东西,这些应该在转换器中正确处理,因为在调用转换器之前应该处理其他所有内容。 即如果用户将字符串输入到数字字段中,则应该通过验证而不是转换器来捕获。