2016-03-07 2 views
0

Я использую Try Catch, и я хочу добавить в Form3.ListBoxes элементы, которые находятся в Form2.ListBoxes в другом типе. Но он перестает добавлять после исключения Catch. Поэтому я хочу сохранить Loop после исключения!VB.net Попробуйте поймать. Keep the Loop после Catch

Моя программа получает продукты и показывает одни и те же продукты, но в другом типе (например: у меня есть футболка с брендом, но я хочу «ту же» футболку в другом бренде).

ListBox5 - это количество, которое я добавляю в Form1. Я загружаю изображения, чтобы быть четкими. Form2 Listboxes находятся в порядке (ListBox1, ListBox2 ...). Form2 и Form3 имеют одинаковую конструкцию.

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\Tabela_Precos.xlsx; Extended Properties=Excel 12.0;") 
     ConnectionString.Open() 

     Dim ds As New DataSet 
     Dim dt As New DataTable 
     ds.Tables.Add(dt) 
     Dim da 

For i = 0 To Form1.ListBox1.Items.Count - 1 

     Dim str As String = Form1.ListBox1.Items(i).ToString 
     Dim prod As String = str.Substring(2, 3) 
     da = New OleDbDataAdapter("SELECT * FROM [Mesa$] WHERE Format([Ref], ""000000000"") like '%" & prod & "%'", ConnectionString) 

     da.Fill(dt) 
     Try 
      ListBox1.Items.Add(dt.Rows(i).Item(0)) 
      ListBox2.Items.Add(dt.Rows(i).Item(1)) 
      ListBox3.Items.Add(dt.Rows(i).Item(3)) 
      ListBox4.Items.Add(dt.Rows(i).Item(5)) 
      ListBox5.Items.Add(Form1.ListBox5.Items(i)) 
      ListBox6.Items.Add(ListBox4.Items(i) * ListBox5.Items(i)) 
     Catch ex As Exception 
     End Try 
    Next 

Мне нужен Try-Catch. Я делаю запрос, и если не существует строки в DataBase, она останавливается. Как я могу продолжать делать петлю после остановки?

Это изображения с запущенной программы (они редактируются):

Form1

Form2

Form3

+0

попробуйте использовать 'On Error Resume Next' и' On Error GoTo' это может помочь – Yog

+0

я думаю, что помогает, потому что я мог бы написать количество, но все-таки не пишу те, что я знаю, что это хорошо ... Но я по-прежнему предпочитаю Try Catch – Silvestre

ответ

0

Вы ответили на вопрос самостоятельно, когда вы говорите «держать петлю после улова ". Вы хотите, чтобы ваша петля была продолжить, резюме или перейти на следующий итерация. Все это ключевые слова VB, и я рекомендую вам ознакомиться с For Next Statement, чтобы понять, как работает цикл For.

Вот один из нескольких способов, которыми вы можете это выполнить.

При отсутствии обработки ошибок, просто игнорировать и продолжать:

Try 
    ... 
Catch ex As Exception 
    Continue For 
End Try 
+0

Я забыл сказать. Я попробовал 'Continue For', но это не сработало ... С' Continue For' после 'Наконец' говорит: _Branching из 'Наконец' недействителен_" – Silvestre

+0

@Silvestre извинения. Удалил это. Исходный пример сделает то, что вам нужно. –

+1

'Continue For' здесь даже не требуется. Если исключение поймано, код возобновится со следующим утверждением после 'End Try', который будет' Next' в вашем примере. [Попробовать онлайн] (https://dotnetfiddle.net/UwAfjZ) –

Смежные вопросы