其他分享
首页 > 其他分享> > TSINGSEE青犀视频行人智能检测测试报错panic: runtime error排查过程

TSINGSEE青犀视频行人智能检测测试报错panic: runtime error排查过程

作者:互联网

上一篇我们介绍了TSINGSEE青犀视频行人智能检测功能在景区项目中的测试,在景区项目系统中,替换本地文件出现报错,错误信息:“panic: runtime error: index out of range [1] with length 1”,此错误意思是程序运行超出索引的范围,会导致程序崩溃。

 

 

先看下代码:

var allFile = ""
for _, dirfile := range dirfiles {
   fname := dirfile.Name()
   n := strings.Split(fname, "_")[1]
   allFile += fmt.Sprintf("%s/%s;", dir, n)
}
allFile = allFile[:len(allFile) -1]

nameSplit := strings.Split(arr[index].Filename, ";")
   log.Println("文件有多个需要替换:" + arr[index].Filename)

   DoLocalFile(0, nameSplit,  func() {
      index+=1
      DoValueToReplaceSource(arr, index, cb)
   })

   return

上面的代码是把所有文件夹下的视频文件进行拼接,并使用分号(“;”)为分割符。但是该代码会出现一个错误:引用一个为nil的切片,即下标为0的元素,这个错误会造成代码中出现index out of range错误,这样就会触发panic,使程序不能正常的运行。

这里使用的是分号(“;”)分割,所以只要进行一次的判断,把分号分割出来的字符需要大于1才行,若果是小于等于1的话就会出错。代码修改如下:

nameSplit := strings.Split(arr[index].Filename, ";")
if len(nameSplit) > 1 {
   log.Println("文件有多个需要替换:" + arr[index].Filename)

   DoLocalFile(0, nameSplit,  func() {
      index+=1
      DoValueToReplaceSource(arr, index, cb)
   })

   return
} else {
   if IsExists(arr[index].Filename) {
      ChangeFile(arr[index].Filename)
   } else {
      log.Println("没有此文件路径")
   }
}

修改后该报错即可解决。TSINGSEE青犀视频仍将不断拓展视频直播系统的功能和优势,一方面,通过AI智能分析实现了智能判断,另一方面,通过物联网、大数据等技术获得最鲜活的数据信息,并进行精准的计算,欢迎大家了解或测试。

标签:index,arr,代码,Filename,TSINGSEE,报错,allFile,nameSplit,runtime
来源: https://www.cnblogs.com/TSINGSEE/p/15294447.html