【问题标题】:vb.net Index was outside the bounds of the arrayvb.net 索引超出了数组的范围
【发布时间】:2015-12-08 01:49:35
【问题描述】:

我将此变量声明为日期:

Dim fromdate as Date

在读取 .csv 文件时,在 while 循环内,我读取了这个值:

Input(1, fromdate)

但如果 CSV 文件中的值为空白,我会收到一条错误消息

Index was outside the bounds of the array.

如果在 .csv 文件中为空白,我如何将 fromdate 设置为 vb.net (Date.Now.ToString("dd/MM/yyyy")) 中的今天日期?

【问题讨论】:

  • Input 是一个非常古老的向后兼容函数——如果你正在编写新代码,几乎可以肯定有更好的方法来做。您可能希望分享更多代码以获得更好的答案。
  • 它的旧代码,只是csv文件最近改了但目前没有时间重写代码,但以后会这样做
  • 很公平。是否肯定是Input 行引发了该错误? The docs 似乎表明它应该只抛出 IOException
  • 是的,我尝试在输入行下方添加一个 if 语句,如果它不是有效日期,但错误肯定会显示在输入行上

标签: vb.net


【解决方案1】:

您尝试读取的值应该有问题。也许它不存在(正如错误所提到的)。

无论如何,您都可以尝试这段代码并捕获错误并控制它:

    Try
        Input(1, fromdate)
    Catch ex As IOException
        MessageBox.Show(ex.Message)
        ' try to set the date in another way or choose the default value
    End Try

来自MSDN

例外:

  • IOException [52]:文件编号不存在。
  • IOException [54]:文件模式无效。

如果您要升级使用非结构化错误处理的 Visual Basic 6.0 应用程序,请参阅“错误号”列。 (您可以将错误编号与 Number 属性(Err 对象)进行比较。)但是,如果可能,您应该考虑将此类错误控制替换为 Visual Basic 结构化异常处理概述。

【讨论】:

    猜你喜欢
    • 2015-04-19
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 2010-11-17
    相关资源
    最近更新 更多