0
我創建了這段代碼來查看,但我假設枚舉值是而不是在我測試時被懶惰地評估過。懶惰評估時,可枚舉異常的行號是多少?
public void EnumerableExceptionTest_CanOnlyBeTestedByInspectingError()
{
var ints = GetIntsButReallyThrowError(); // error occurs here.
var y = 10;
var z = 11;
foreach(var i in ints) // error *could* be on this line, but not in my tests.
{
Console.WriteLine(i+y+z);
}
}
private IEnumerable<int> GetIntsButReallyThrowError()
{
var x = true;
if (x)
{
throw new Exception("Threw this on purpose.");
}
else
{
return new int[]{1,2,3};
}
}
是否有可能,雖然不會發生,直到它懶洋洋地評估誤差,從而使錯誤行數將是foreach循環? *請注意,如果methodname不在callstack所說的那一行上,這在調試的時候記住這一點很有用。這並不一定意味着您的代碼/ pdbs已過時:-P
是的,它做到了。謝謝。 – user420667
請注意,您可以在第一個「yield」之前拋出異常,並且在調用方法時仍不會拋出異常;只有當你嘗試獲得第一個值。 – Servy