Co się dzieje podczas wystąpienia wyjątku w pętli while?

0

Witam

Zakładam, że wyjątek jest obsłużony w odpowiedniej klauzuli catch (taki try - catch - finally w pętli while). Czy następuje wtedy kolejne przejście pętli od początku?

Pozdrawiam

0

Czemu miałoby nie nastąpić? Faktycznie wszystko jest wewnątrz pętli to naturalnie wykona się reszta kodu tej iteracji (to co było za całym blokiem później w pętli) i przejdzie do normalnego wykonywania reszty pętli. Wszystko zawsze musi działać zgodnie z logiką, inaczej nie byłoby to programowanie.

0

Pętla while jest przerywana gdy:

  • warunek przestanie być spełniony,
  • zostanie wywołany break,
    Istnieje jeszcze przypadek, gdy leci nieobsłużony wyjątek ze środka while.

Jak wiadomo rzucenie wyjątku jest jak goto do miejsca w którym ten wyjątek zostanie obsłużony - po obsłużeniu sterowanie przechodzi tuż za blok catch/finally.

0

Chwila. Robi się pętla while. W niej jest blok try. W nim może pojawić się wyjątek. Pojawia się. Jako, że obsługuję go w bloku catch, wykonają się wszystkie instrukcje w try do momentu w którym pojawił się wyjątek. Następnie wykonywanie bloku try jest przerywane i wykonują się wszystkie instrukcje z bloku catch w którym przechwytuje i obsługuję ten wyjątek. Następnie wykonuje się cały blok finally jeśli taki jest. Załóżmy, że po bloku finally jest koniec pętli while. I teraz pytanie czy wykonywania wraca do pierwszej instrukcji w pętli while - czyli wykonywana jest następna iteracja, czy też jest coś innego robione?

0

Naturalnie przejdzie do następnej iteracji, przecież żaden z warunków podanych przez Wibowita nadal nie został spełniony. Wyjątek nie zwiał ze środka pętli - został złapany w czasie iteracji.

0

Osobiście używam podobnej konstrukcji do obsługi interaktywnej idiotoodporności:

do try
{
	//... potencjalnie durne działanie usera (pierwsze lub kolejne)
}
catch(/*...*/)
{
	//... wypięcie się na usera
}
while(/*...*/); //sprawdzenie czy user skończył z durnotami ;)

Co akurat ładnie mi się pokrywa z moim podwójnym stylistycznym zboczeniem do redukcji nadmiarowych nawiasów gdy w pętli jest tylko jedna instrukcja (tutaj try).

1 użytkowników online, w tym zalogowanych: 0, gości: 1