Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 15557|Odpowiedź: 0

[Komunikacja] Jeśli jest powrót, spróbuj złapać ostatecznie kolejność wykonania

[Skopiuj link]
Opublikowano 17.12.2015 12:34:00 | | |
1. Niezależnie od tego, czy istnieje wyjątek czy wyjątek, kod w ostatnim bloku zostanie wykonany;
2. Gdy następuje powrót w próbie złapania, ostatecznie nadal zostanie wykonany egzekucja;
3. Ostatecznie wykonuje się po operacji wyrażenia po zwróceniu (w tym momencie wartość po operacji nie jest zwracana, ale wartość do zwrócenia jest zapisywana jako pierwsza, niezależnie od kodu w ostatecznym momencie, zwrócona wartość nie zmieni się, nawet jeśli jest to wcześniej zapisana wartość), więc wartość funkcji return jest ustalana przed ostatecznym wykonaniem;
4. Najlepiej nie uwzględniać zwrotu w finale, bo inaczej program zakończy się wcześniej, a wartość zwrotu nie jest tą zapisaną w próbie lub złapaniu.
Przykład:
Sytuacja 1:try{} catch(){}final{} return;
            Najwyraźniej procedura jest przeprowadzana w kolejności.
Sytuacja 2:try{ return; }catch(){} final{} return;
          Program wykonuje kod przed return w bloku try (w tym operację wyrażenia w instrukcji return);
         następnie wykonaj ostatni blok, a na końcu wykonaj powrót w try;
         Na koniec zablokuj return, ponieważ program wrócił w try, więc nie jest już wykonywany.
Sytuacja 3:try{ } catch(){return; } wreszcie{} powrót;
         Program wykonuje próbę jako pierwszy, a jeśli napotka wyjątek, wykonuje blok chwytania,
         Jeśli wystąpi wyjątek, wykonaj kod przed return (w tym operację wyrażenia w instrukcji return) w catch, a następnie wykonaj cały kod w końcowym poleceniu.
                     Na koniec wykonaj powrót w bloku złapania. Ostatecznie kod w 4 miejscach nie będzie już wykonywany.
         Bez wyjątku: wykonaj, spróbuj, a potem w końcu wróć.
Sytuacja 4:try{ return; }catch(){} final{return; }
          Program wykonuje kod przed return w bloku try (w tym operację wyrażenia w instrukcji return);
          Następnie wykonaj ostatni blok, ponieważ w ostatnim bloku jest powrót, więc wyjdź wcześniej.
Przypadek 5:try{} catch(){return; }wreszcie{return; }
          Program wykonuje kod przed return (w tym operacje wyrażenia w instrukcji return) w bloku catch;
          Następnie wykonaj ostatni blok, ponieważ w ostatnim bloku jest powrót, więc wyjdź wcześniej.
Sytuacja 6:try{ return; }catch(){return; } wreszcie{return; }
          Program wykonuje kod przed return w bloku try (w tym operację wyrażenia w instrukcji return);
          Istnieje wyjątek: wykonaj kod przed return (w tym operację wyrażenia w instrukcji return) w bloku catch;
                       Następnie wykonaj ostatni blok, ponieważ w ostatnim bloku jest powrót, więc wychodzi on wcześniej.
          Bez wyjątków: potem wykonaj ostatni blok ponownie i wyjdź wcześniej, bo w ostatnim bloku jest powrót.

Ostateczne zakończenie: Każde zdanie return w try or catch jest wykonywane przed ostatecznym zdaniem, jeśli w końcu istnieje.
                  Jeśli jest w końcu instrukcja return, program wróci, więc return in na pewno zostanie zwrócony.
                  Kompilator implementuje zwrot w końcu jako ostrzeżenie.




Poprzedni:.net używa HttpListener do słuchania treści oraz wątków do odpowiadania użytkownikom, aby zapobiec blokowaniu
Następny:VS2013, szybko dotarcie do określonej linii kodu, jaki jest skrót?
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com