vb.net中的“格式异常未被取消”

时间:2011-11-10 11:13:59

标签: vb.net visual-studio-2008

代码

中有什么问题
 Dim sReaderList As String
    sReaderList = New System.String(vbNullChar, 1024)
    Dim x As Integer = Convert.ToInt32(sReaderList)

调试时会产生“Format Exception was Unhandeled” 和输入字符串在vb.net中的格式不正确

3 个答案:

答案 0 :(得分:1)

当给定字符串包含无效字符或为空字符串时,

Convert.ToInt32会抛出格式异常(请注意Nothing可以,但''不是)。

正如Marco所提到的,您必须捕获异常或确保该字符串仅包含有效的数字字符(并且vbNullChar不是其中之一)。另外:如果出现空字符串的可能性,则必须手动检查或再次捕获异常。

答案 1 :(得分:1)

错误正在发生,因为您正在尝试将某些内容转换为无法转换的整数,因此它会抛出异常。

您可以使用两种方法来解决此问题:

1)将它全部包装在try / catch块中

 Dim sReaderList As String
  sReaderList = New System.String(vbNullChar, 1024)
  Try
     Dim x As Integer = Convert.ToInt32(sReaderList)
  Catch ex As Exception

  End Try

2)使用Tryparse方法

  Dim i As Integer
  Dim s As String = String.Empty
  Dim result As Boolean

  result = Integer.TryParse(s, i)

    If (result) Then
        'Code here
    End If

答案 2 :(得分:0)

您正在尝试将填充了非数字的字符串转换为整数...因此您将收到错误 你有没有期待不同的东西?为什么呢?

如果你想捕捉异常,你可以做

    Dim sReaderList As String
    sReaderList = New System.String(vbNullChar, 1024)
    Try
        Dim x As Integer = Convert.ToInt32(sReaderList)
    Catch
        ' Manage the error here
    End Try

请注意,例如,如果在字符串的开头插入一个数字,则错误消失。

sReaderList = "1" & sReaderList
Dim x As Integer = Convert.ToInt32(sReaderList) ' This works