首页 > 代码库 > 索引超出范围bug(1)
索引超出范围bug(1)
错误信息:
CustomerMessage:999999 - 系统异常。ExceptionID:ab4fde6a-d4a6-4ba0-8148-26e494ee8be3Data:TtrackID>>Better.Infrastructures.Log.TrackIDBetter.Infrastructures.Log.AppException: 一拆分析异常 ---> System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index 在 System.ThrowHelper.ThrowArgumentOutOfRangeException() 在 System.Collections.Generic.List`1.RemoveAt(Int32 index) 在 System.Collections.Generic.List`1.Remove(T item) 在 Better517Na.InterB2CFirstAnalyzePro.AnalysisProcess.MainProcess.TaskProcess(Object objTask) 位置MainProcess.cs:行号 118 --- 内部异常堆栈跟踪的结尾 ---
跟到代码发现是这样一句:dealingTaskList是List<string>,taskID是string。
dealingTaskList.Remove(taskID);
怎么看都不会出现问题,但结果就是出现问题了,于是我就改成下面这个
if (dealingTaskList != null && dealingTaskList.Exists(sa => sa == taskID)){ dealingTaskList.Remove(taskID);}
结果还是报错,实在没有办法了,只好记日志看看是不是出现在这个地方。但是中途我又想起他们好像是开线程做的,会不会是多线程的时候出现问题呢?于是我把代码改成下面这个样子。为防止万一,我还是把日志记上。
lock (lockObj){ if (dealingTaskList != null && dealingTaskList.Exists(sa => sa == taskID)) { temp += "[ex进入]"; dealingTaskList.Remove(taskID); temp += "[ex移除成功]"; } else { temp += "[ex不满足条件]"; }}
截止到目前为止,没有出现上述bug了。
索引超出范围bug(1)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。