2011-10-19 15 views

Odpowiedz

6

Tak,

Wynikiem wyrażenia try/catch będzie ostatni wiersz albo bloku try lub catch, ale blok finally zawsze wykonać bez względu na to co

+0

Nawet jeśli istnieje wyraźna instrukcja 'return' w bloku' try'? – Rogach

+2

tak. [I te inne znaki, aby dopasować minimalną długość] –

+2

Jedyny przypadek, w którym blok 'finally' nie jest wykonywany, jest wtedy, gdy' sys.exit() 'jest wywoływane w bloku' try' lub 'catch'. – axel22

1

Tak.

Punkt polega na zapewnieniu, że kod czyszczenia zostanie wykonany bez względu na to, jaką ścieżkę używa kod do opuszczenia bloku try. Zdarza się to przy zwykłym powrocie, gdy wyjątek jest rzucany i wychwytywany, oraz gdy wyjątek jest rzucany, który nie jest przechwytywany przez ten blok try. Jedyną rzeczą, która uniemożliwi jej działanie, jest to, że program nie może w ogóle opuścić bloku try; nieskończona pętla wewnątrz lub proces, w którym zabijane są w jakiś sposób, które uniemożliwiają to normalne przetwarzanie lub coś w tym porządku. Jestem całkiem pewny, nawet jeśli wyjdziesz z procesu z bloku try, że blok finally zostanie wykonany przed faktycznym procesem.

Powiązane problemy