GetFileInfo() 和 LastWriteTime() 给出一个错误:索引超出了数组的边界



我有以下代码刺:

更新

(code above this code is creation of pdf file)
Dim PdfFileInfo As FileInfo
Dim PdfModificationTime As Date
If (FileIO.FileSystem.FileExists(strPdfFileName)) Then
   PdfFileInfo = FileIO.FileSystem.GetFileInfo(strPdfFileName)
   PdfModificationTime = PdfFileInfo.LastWriteTime()
End If

文件存在,但是当我使用GetFileInfo()LastWriteTime()时,它会给出错误:"索引超出了数组的范围"

我尝试了很多东西,但没有运气... :(

解决

问题已解决,单独回答!

这里有

两个要点。

  1. 我在问题中提到的那些行出错的可能性

  2. 错误:索引超出数组的边界

让我们谈谈第一个:


许多人告诉这些行的错误是不可能的,我一开始在编写代码时也这么认为,但得到了一个错误,该错误显示在日志中。

然后我阅读了有关系统功能GetFileInfo()的文档。

他们说什么,这个函数提供有关系统在其内存中"兑现"的文件的信息,system does this cashing periodically .

现在

试想一下,系统只是在其内存中兑现了文件系统信息,现在您已经创建了一个文件并在文件中写入了一些内容并调用了函数GetFileInfo()

看到问题了吗?看看当你调用一个函数GetFileInfo()时,系统甚至没有在内存中兑现文件对象。所以我们在这里得到fileinfo object null,当你尝试获取空对象的LastWriteTime()时,这里系统会抛出异常。

解决方案:我已经在代码中PdfFileInfo的fileInfo对象上使用while循环进行了空检查(是的,这个问题已经过测试和解决...... :) )


现在谈谈第二个:

问题中引用的代码不在 try 块中,因此在调用函数时会收到此功能块引发的任何异常。在这里,调用函数以自己的方式解决了此异常,并抛出了一个异常"索引在数组边界之外",该异常与调用函数相关,但未反映GetFileInfo()抛出的实际异常。

解决方案:将此代码块放在try-catch块中

感谢所有的评论和讨论... :) !

最新更新