Vb.net 数据表的错误处理

Vb.net 数据表的错误处理,vb.net,datatable,Vb.net,Datatable,我有一个带有数据表的for循环,我试图弄清楚数据表中是否没有行。它是否忽略了其中没有行的事实而继续前进,还是失败并给出异常?这是我的循环代码,但这个问题在所有情况下都应该是相同的 For Each dr As DataRow In dt.Rows If Not IsDBNull(dr.Item("MATERIALID")) And dr.Item("MATERIALID") IsNot Nothing Then listOfResults.Add(CUInt(

我有一个带有数据表的for循环,我试图弄清楚数据表中是否没有行。它是否忽略了其中没有行的事实而继续前进,还是失败并给出异常?这是我的循环代码,但这个问题在所有情况下都应该是相同的

  For Each dr As DataRow In dt.Rows
      If Not IsDBNull(dr.Item("MATERIALID")) And dr.Item("MATERIALID") IsNot Nothing Then
          listOfResults.Add(CUInt(dr.Item("MATERIALID")))
      Else
          Trace.TraceError("Error Details: {0} Stack: {1}", "The materialID is nothing/null", System.Reflection.MethodInfo.GetCurrentMethod.ToString)
      End If
 Next

如果datatable没有行,那么它将命中for循环并退出,并在for循环之后执行下一条语句。
注意:但是如果datatable dt为nothing,那么它将抛出一个异常。

我们的策略是检查datatable是否为nothing以及是否有行。它在一个if语句中去掉了这两个条件

if not dt is nothing andalso dt.hasrows then
    'loop here
end if

如果我建议检查
dt.Rows.Count()=0
,是否会遗漏一些内容?好的,但是如果数据表没有行,并且命中了它,会发生什么?它会失败并发出异常吗?没有异常。并且仅当dt不是空时,才会检查dt.hasrows。如果第一部分为假,则说明为假。@Engerlost是正确的。我的开发团队在检查一个变量的值时使用这个标准,这个值可以是空的。在检查变量的值之前,我们总是确保变量不是空的。