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 № 1Połóż 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ę