码迷,mamicode.com
首页 > 其他好文 > 详细

索引超出范围bug(1)

时间:2014-12-17 20:45:01      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   io   color   sp   on   div   问题   

错误信息:

CustomerMessage:999999 - 系统异常。
ExceptionID:ab4fde6a-d4a6-4ba0-8148-26e494ee8be3
Data:TtrackID>>Better.Infrastructures.Log.TrackID

Better.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)

标签:style   blog   ar   io   color   sp   on   div   问题   

原文地址:http://www.cnblogs.com/tianxue/p/4170208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!