我有一段代码,我期待一个方法在循环中被重复调用,在某个点返回null--null被返回是因为这个方法试图读取的表单元格是空的。这部分很清楚,这不是行为的问题部分。下面是这部分代码:
while (!String.IsNullOrEmpty(columnI_value))
{
typeOfShareLineCounter++;
try
{
columnI_value = sheet.GetRow(3 + typeOfShareLineCounter + typeOfShareStartIndexNewFile).GetCell(8).ToString();
}
catch
{
}
}
我不明白的是,为什么在这种情况下,当到达一个空单元格时程序会停止执行?我得到了NullReferenceException,但我希望程序继续执行,因为发生此异常的代码行位于"try"块中,正如您在上面看到的那样。这是因为Visual Studio的某些设置吗?作为一个附带说明,在"正常"场景中,我可能已经检查了GetCell方法返回的内容,如果它为null,就跳出循环(因为在本例中null意味着我们已经到达需要读取的文件段的末尾)。
然而,如果GetCell试图读取的单元格是空的,它会产生一个异常。这就是我使用try-catch的原因。但是我没有想到在这种情况下程序会停止执行。目前,我没有看到一种方法来处理这个异常而不破坏程序。顺便说一句,这个有问题的方法(GetCell)是NPOI库的一部分,用于处理excel文件。
非常感谢你的帮助。
1条答案
按热度按时间eyh26e7m1#
为什么在访问之前不检查一下是否为null呢?我认为
GetCell
抛出异常是因为GetRow
返回null
。也不清楚columnI_value
中的初始值是什么。我会使用类似这样的代码(只是猜测这段代码预期做什么):