0

我有以下代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  If Not TextBox1.Text = "" Then
    If TextBox1.Text.Contains("ping") Then
      PingSplit = TextBox1.Text.Split(" ")
    End If

    Select Case True
      Case TextBox1.Text.Contains("ping")
        ' I get an IndexOutOfRange Exception was unhandled on below line
        If PingSplit(0) Is Nothing Or PingSplit(1) Is Nothing Then
          MsgBox("Invalid Ping IP!")
        Else
          ListBox1.Items.Add(GetPingMs(PingSplit(1)))
          PingSplit(0) = vbNullString
          PingSplit(1) = vbNullString
        End If
End Sub

但是,当我简单地输入“ping”时,我无法让代码工作,“ping www.google.com[1]”工作得很好,但是它不能只使用 ping。这个想法是我输入 ping“x”,代码拆分 ping 并获取地址 (x),然后在 GetPingMs 函数中使用地址 (getpingMsg(pingsplit(1)),但是我得到了 IndexOutOfRange 异常。

4

1 回答 1

3

你得到一个例外,因为你试图取消引用一个不存在的数组元素。如果您输入的只是“ping”,那么您的PingSplit数组将只有一个元素,索引为 0。但您正在尝试引用第二个元素:

PingSplit(1)

在尝试引用可能不存在的元素之前,您需要检查数组的长度。像这样的东西可能会起作用(我的 VB 有点生疏,我不能 100% 确定这是你检查长度的方式):

If PingSplit.Length < 2 Then
    MsgBox("Invalid Ping IP!")
End If

基本上,任何时候你要引用一个集合中的项目,你都应该首先对集合进行一些检查,以确保这些项目确实存在。

于 2013-10-27T23:31:01.173 回答