/ / Spróbuj wykonać catch - vb.net, for-loop, try-catch, aplikacja na konsolę, kontynuuj

Wypróbuj wykonanie catch - vb.net, pętla for, try-catch, aplikacja konsolowa, kontynuuj

Moje wymaganie to mieć pętlę foreach wewnątrz bloku try, jak poniżej:

Try
Foreach file in folder1
line 1
line 2 // throw exception
line 3
line 4
End Foreach
Catch Exception
// do error logging

moim wymaganiem jest, gdy wystąpi wyjątek w pętli foreach, wykonanie nie powinno zostać zakończone. Na przykład,
1.Plik1 zostanie przetworzony
2. Plik 2 powinien zostać przetworzony, ale z powodu jakiegoś błędu catch stmt zostanie wykasowany w celu zapisania informacji o błędzie 3. Mimo że wystąpił błąd, plik 3 powinien zostać przetworzony
Proszę zasugerować mi kod Vb.net, aby wykonać powyższe kroki.

Odpowiedzi:

0 dla odpowiedzi № 1

Połóż Try ... Catch blok w środku For Each blok, nie na zewnątrz:

For Each file In folder1
Try
" line 1 "
" line 2 " // throw exception
" line 3 "
" line 4 "
Catch ex As Exception
" error logging "
End Try
Next file

Nawiasem mówiąc, wymagania, które opublikowałeś są sprzeczne. Chcesz tego wykonania powinien zostać zakończony „jeśli przetwarzanie spowoduje wyjątki. Jednak„ mimo wystąpienia błędu, plik 3 powinien zostać przetworzony ”, co sugeruje, że wykonanie nie powinieneś zostać zakończonym.

Ta implementacja nie kończy wykonywania pętli.


0 dla odpowiedzi nr 2
Foreach file in folder1
Try
line 1
line 2 // throw exception
line 3
Catch Exception
// do error logging
End Try
End Foreach

Musisz umieścić blok Try / Catch w pętli ForEach, ponieważ pierwszy Excpetion zakończy pętlę