#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