«Исключение формата не было обработано» в vb.net

#vb.net #visual-studio-2008

#vb.net #visual-studio-2008

Вопрос:

Что здесь не так в коде

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

При отладке выдается сообщение «Исключение формата не было обработано»
и входная строка была не в правильном формате в vb.net

Ответ №1:

Convert.ToInt32 выдает исключение формата, когда данная строка либо содержит недопустимые символы, либо является пустой строкой (обратите внимание, что Nothing это было бы нормально, но '' это не так).

Как упоминалось Марко, вы должны перехватить исключение или убедиться, что строка содержит только допустимые числовые символы (и vbNullChar не является одним из них). Также: если возникает вероятность появления пустых строк, вы должны вручную проверить это или снова перехватить исключение.

Ответ №2:

Ошибка возникает из-за того, что вы пытаетесь преобразовать что-либо в целое число, которое не может быть преобразовано, поэтому оно выдает исключение.

Для решения этой проблемы можно использовать два подхода:

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
  

Ответ №3:

Вы пытаетесь преобразовать строку, заполненную не цифрами, в целое число… итак, вы получаете ошибку.
Вы ожидали чего-то другого? Почему?

Если вы хотите перехватить исключение, вы могли бы сделать

     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" amp; sReaderList
Dim x As Integer = Convert.ToInt32(sReaderList) ' This works
  

Комментарии:

1. Спасибо, на самом деле я новичок в vb.net . Можете ли вы объяснить мне, что означает 1024.

2. @vikky: вы создаете новую строку, заполненную 1024 vbNullChar