无法识别在C#中使用对象初始值设定项时引发异常的属性
问题描述:
在下面的两个示例代码中,我试图通过使用C#常规方法和对象初始值设定项实例化名为的测试类。无法识别在C#中使用对象初始值设定项时引发异常的属性
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
};
在上面的代码中,当我使用对象初始值设定项时,我无法理解哪个属性被抛出异常。在这里,我无法逐行调试。如果我初始化了很多属性,则很难识别。
这是我的问题:如何识别哪个属性显示异常窗口的异常?现在内部的异常是空的。
答
对象初始应该用于简单的初始化。如果你有一个引发异常的代码,你会遇到你所描述的问题。
我知道这不是一个真正的答案,但你不知道哪个属性失败。 在可空的情况下,您可以使用类似这样的内容,在其中指定默认值。
var test = new Test
{
Date = nullDate.GetValueOrDefault(new DateTime()),
Name = "String",
AnotherDate = notNullDate.Value
};
你不能 - 这就是为什么你应该在调用初始化程序之前做空检查等。异常不会给你任何关于_what_的上下文是空 –
@DStanley我可以检查空引用,但我的问题是没有其他方法来确定哪个属性抛出异常? – JEMI
否 - 该例外不会导致_what_为空。 –