首页 新闻 会员 周边 捐助

层层判断仍未排除的异常:“未将对象引用设置到对象的实例”,如下代码有啥可能原因?请教

0
[已关闭问题]

dim sStr as string=","
try
dim dt as datatable =getData(1)
If dt.Rows.Count > 0 Then
 Dim drRows() As DataRow = dt.Select("F1 like 'BCX/%' ")
 
 If drRows.Length > 0 Then
     Dim i As Integer
     For i = 0 To drRows.Length - 1
         sStr += DBNULL2Str(drRows(i).Item("F1") + ","
     Next
 End If
End If

Catch ex As Exception
   log(ex)
end Try

以上运行时,偶尔会出现log “System.NullReferenceException: 未将对象引用设置到对象的实例”
错误 代码竟然是这行: sStr += DBNULL2Str(drRows(i).Item("F1") + ","
由于调试正常,批量客户运行时,会这样,无法调试。
请问有什么可能?

intel的主页 intel | 初学一级 | 园豆:200
提问于:2010-07-29 11:25
< >
分享
其他回答(2)
0

有可能是dt获取时,并发访问产生的错误。

Astar | 园豆:40805 (高人七级) | 2010-07-29 11:36
已经正常 select后,判定 drRows.Length > 0 了,怎么个 并发方式?
支持(0) 反对(0) intel | 园豆:200 (初学一级) | 2010-07-30 17:38
@intel:嗯,你也可判断它是否为null然后再取。有时如果数据库访问类设计有问题,在并发访问时也会出错。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-07-30 17:41
根据运用证明 应该是dotnet的bug;将 这一句代码 : dim dt as datatable =getData(1) 改为 两句: dim dt as datatable dt=getData(1) 上述错误没再发生
支持(0) 反对(0) intel | 园豆:200 (初学一级) | 2010-09-01 15:07
上述发错了,是把这句 Dim drRows() As DataRow = dt.Select("F1 like 'BCX/%' ") 改为了 两句: Dim drRows() As DataRow drRows= dt.Select("F1 like 'BCX/%' ") 即可
支持(0) 反对(0) intel | 园豆:200 (初学一级) | 2010-09-01 15:09
@intel:这个....
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-09-01 18:07
0

有可能是根本没数据

_____昆 | 园豆:204 (菜鸟二级) | 2010-07-29 16:35
0

drRows(i).Item("F1") 这个值有可能为 nothing.

HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-08-10 15:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册