索引超出范围bug(1)

错误信息:

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了。

时间: 2024-11-07 04:36:10

索引超出范围bug(1)的相关文章

GridView1.DataKeys[e.RowIndex].Value.ToString() 索引超出范围

问题:GridView1.DataKeys[e.RowIndex].Value.ToString() 必须为非负值并小于集合大小. 异常信息:System.Web.HttpUnhandledException: 引发类型为   "System.Web.HttpUnhandledException"的异常.---> System.ArgumentOutOfRangeException: 索引超出范围.必须为非负值并小于集合大小. 报错位置:GridView1.DataKeys[e.

控件运行后报索引超出范围的问题解决

错误现象: 错误信息:索引超出范围.必须为非负值并小于集合大小. 参数名: index(开发环境:VS2010,三方控件DotNetBar) 一般在程序开发过程中项目报以上的错误,一般在程序界面是没有办法捕获异常的,不过也不是这样的问题就没有办法解决,我们可以在在项目的入口文件:Program.cs中添加一下代码: Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application

索引超出了数组界限(Microsoft.SqlServer.Smo)

SSMS连接远程SQL Server服务器是很方便的. 昨天我用SQL Server 2008 SSMS连接SQL Server 2012竟然报错,如下图: 在网上搜了,参考这个参考那个,太啰嗦了,确实是软件固有的问题,微软肯定会发补丁解决的! 于是看了我的SQL Server 2008的版本,在SSMS界面,帮助--关于.没有类似下面的Windows版本那样明显: 而是10.0.xxxx.x,我只知道10.0的SQL Server 2008,如果前面是10.5就是SQL Server 2008

c# MVC中 @Styles.Render索引超出下标

@Styles.Render( "~/Content/bootstrap/css", "~/Content/mycss") 提示索引超出下标 后来发现市bootstrap.css文件的问题,当升级bootstrap3.3版本后,就出现了这个问题. 如果将bootstrap文件单独出来,使用html中link方式引用就可以. 后来在网上找到解决方案: WebGrease引起的,需要nuget更新一下WebGrease. 我将WebGrease更新到1.6版本就解决了

ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法

"索引超出了数组界限"也有可能确实是因为你选择的二维码Version对应的容量不足以存储你所放的内容,如果你确定使用的版本容量二维码能存储你的内容,但还是报错,那么再考虑此解决方法 这两天忙着做一个客户标签打印程序,因为二维码里面存在控制符,使用ZPL指令存在一些问题,因此决定使用生成二维码图片然后转换成ZPL格式图片来打印.途中找了很多类库,很多都无法自定义QR的version而放弃,转而找到ThoughtWorks.QRCode.dll,效果很满意,但是测试的时候发现经常会提示&q

Parameter index out of range(1 &gt; number of parameters, which is 0)参数索引超出范围

今天在写项目的过程中,有一个模块是做多选删除操作,通过servlet获得多选框的value组,然后执行sql操作.如下: 1 @RequestMapping( "/delteCouse.do" ) 2 public void delCouse( HttpServletRequest req, HttpServletResponse resp ) throws SQLException { 3 4 //处理中文 5 try { 6 req.setCharacterEncoding(&qu

关于SQLserver2008索引超出了数据

由于公司只支持了2008.不支持2012的数据库.所以安装的2008.但在对表进行操作的时候出现如下异常: 这个问题是由于本地装的2008,但IT那边的测试机上面确装的2012.所以2008连接了2012的实例导致这个异常.操作的时候一直只能T-sql实现. 在网上找了很多关于这个方面的解决方法.安装了N多个补丁包.还是不能解决这个问题.待解决中...

呈现报表时出现错误 索引超出范围

在Reporting Services报表服务器上部署报表时,报如下错误: 针对该错误的排查步骤: 1.查看访问的报表的数据集是否在数据库中执行失败 2.查看报表页面中是否有错. 我遇到的问题是第二种,这种也是最不好排查的. 情况时是该报表在VS2003上可以正常显示,但是放到2008上就报错.最后,我重新在2008上创建一个同样的报表,一步一步的创建报表元素,最后发现有一个文本框属性中的“Repeat With”值为“table 10” ,去掉它就可以在2003和2008上正常显示了.

python 列表,元组,字符串 切片 超出索引值不报错

通常情况下,当我们以索引值对一个字符串,或者元组,列表取值时,如果索引超出边界,就会报错,但是如果我们使用切片呢? 字符串: 列表: 元组: 可以看到,这三种情况都没有报错,而是返回对应类型的空结果!