인덱스 범위 초과 버그 (1)

2394 단어 bug
오류 메시지:
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이고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 ]";
    }
}

지금까지 상술한 버그가 발생하지 않았다.

좋은 웹페이지 즐겨찾기