vb.net - 如果条件导致异常。如何纠正?
问题描述
我有以下代码:
For i = 0 To dt3.Rows.Count - 1
If dt3.Rows(i).Item("tablename") <> oldtablename Then
oldtablename = dt3.Rows(i).Item("tablename")
*****SOME CODE HERE******
Else
*****SOME CODE HERE******
End If
If i = dt3.Rows.Count-1 Or oldtablename <> dt3.Rows(i + 1).Item("tablename") Then
''time to build up the query and execute it...
query = query1 & query2
dtCDV = executequery(query)
End If
Next
最后一个 IF 会导致异常,因为 dt3.rows(i+1)... 大于到达最后一行时的行数。我需要在 2 种情况下执行最后一个 if 条件:
1) 如果我们在 for 循环的最后一次迭代中 2) 如果 oldtablename 与下一行中包含的变量不同(如果下一行存在...)
这怎么能正确写?
谢谢
解决方案
您可以尝试以下解决方案,在最后一个条件下使用OrElse
而不是:Or
if
For i As Integer = 0 To dt3.Rows.Count - 1
If dt3.Rows(i)("tablename") <> oldtablename Then
oldtablename = dt3.Rows(i)("tablename")
'some code here
Else
'some code here
End If
If i = dt3.Rows.Count-1 OrElse oldtablename <> dt3.Rows(i + 1)("tablename") Then
'time to build up the query and execute it...
query = query1 & query2
dtCDV = executequery(query)
End If
Next
在这种情况下,条件的右侧部分 ( ) 仅在条件的左侧部分 ( )oldtablename <> dt3.Rows(i + 1)("tablename")
为 时才被评估。i = dt3.Rows.Count-1
False
推荐阅读
- arrays - TCSH shell 中的循环数组
- java - Hibernate org.hibernate.hql.ast.QuerySyntaxException:当我尝试通过时间戳差异清除时出现意外令牌
- google-visualization - 谷歌图表未在 yaxis 上显示名称
- ios - 在 React Native 中通过 USB 连接的 iPhone 在 Mac 上访问“localhost”时出现 Axios 网络错误
- c++ - 在c ++中的二维数组中输入空格
- python - 如何在 Python 中列出所有可能的列表组合及其计数
- javascript - JQuery datepicker不改变语言,只加载最后导入的语言
- groovy - 如何在groovy中定义可变数量的对象列表?
- google-chrome - ExtJs 现代 6.0.2:在 Chrome 90 上的某些情况下未触发绘制事件
- azure - 调用 Azure AD 的守护程序控制台应用程序找不到 AppRole (MSAL)