在C#中使用Object初始化程序时无法识别抛出异常的属性

时间:2016-11-23 15:55:55

标签: c# exception object-initializers

在下面的两个示例代码中,我尝试使用C#normal方法和Object初始化程序实例化一个名为 Test 的类。

DateTime? nullDate = null; //this value will come from somewhere else
DateTime? notNullDate = DateTime.Now;
var test = new Test();
test.Date = nullDate.Value; //exception will throw here
test.Name = "String";
test.AnotherDate = notNullDate.Value;

在上面的示例代码中,我可以清楚地了解调试时哪个属性显示异常。

DateTime? nullDate = null; //this value will come from somewhere else
DateTime? notNullDate = DateTime.Now;
var test = new Test
{
    Date = nullDate.Value,
    Name = "String",
    AnotherDate = notNullDate.Value
};

在上面的代码中,当我使用对象初始化程序时,我无法理解哪个属性被抛出异常。在这里,我无法逐行调试。如果我初始化了许多属性,那么很难识别。

以下是我的问题:如何识别哪个属性在异常窗口中显示异常?现在,内部异常为空。

enter image description here

1 个答案:

答案 0 :(得分:0)

对象初始值设定项应该用于简单初始化。如果你有一个抛出异常的代码,你将遇到问题。

我知道这不是一个真正的答案,但你不会知道哪个属性失败了。 如果是nullables,你可以使用这样的东西,你指定默认值。

var test = new Test
        {
            Date = nullDate.GetValueOrDefault(new DateTime()),
            Name = "String",
            AnotherDate = notNullDate.Value
        };