«Исключение формата было разобрано» в vb.net - PullRequest
0 голосов
/ 10 ноября 2011

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

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

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

Ответы [ 3 ]

1 голос
/ 10 ноября 2011

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

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

1 голос
/ 10 ноября 2011

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

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

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
0 голосов
/ 10 ноября 2011

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

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

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...