Używanie konstrukcji try-catch-finally do pobrania rekordu bazy danych, wydaje się, że muszę zwrócić wartość wewnątrz bloku try
na wypadek, gdyby wszystko było w porządku (jak w przypadku wyjątku, koniec funkcji nie ma na celu zostać osiągnięty). Ale jeśli wrócę do kodu try
, czy zostanie osiągnięty kod finally
(aby zamknąć połączenie itp.)?Czy `finally` blokuje się w przypadku, gdy` return` znajduje się w bloku `try` lub` catch`?
Odpowiedz
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
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.
- 1. Javascript: try/catch/finally return statement
- 2. Powrót metody, w bloku "try" lub po "catch" bloku?
- 3. Czym różni się zawijanie bloku try-finally od bloku try-except i na odwrót?
- 4. Zwraca typ z try-catch-finally
- 5. Jaka jest korzyść z używania "finally" po bloku try-catch w java?
- 6. Czy blok try-catch-finally jest synchroniczny w pliku node.js?
- 7. PDO twierdzi, że przechylił wyjątek, mimo że znajduje się w bloku try/catch?
- 8. Co lepiej użyć, __try/__ oprócz bloku lub bloku try/catch?
- 9. mogę uniknąć takich kłopotliwych try ... catch bloku
- 10. Czy jest taki przypadek, gdy w bloku try \ finally, ostatecznie nie zostanie wykonany?
- 11. Który jest szybszy - A Korzystanie blok lub try/catch/finally
- 12. co powinienem użyć bloku try lub catch lub zdarzenia onerror
- 13. Try-catch-finally, a następnie ponownie połów try
- 14. Powershell/catch/finally
- 15. Python try: except: finally
- 16. Korzystanie zmienną w try, catch, finally bez deklarowania go poza
- 17. Dlaczego V8 nie może zoptymalizować try-catch-finally?
- 18. Ciągle otrzymuję wyjątek, mimo że kod znajduje się w bloku prób/catch
- 19. zaimportować plik javascript w pliku html wewnątrz bloku try catch
- 20. Blok try/catch w Arduino
- 21. Co dzieje się z zwracaną wartością po wyjściu wyjątku w bloku finally?
- 22. Czy muszę otaczać fileInputStream.close blokiem try/catch/finally? Jak to jest zrobione?
- 23. Chrome zatrzymał się na wyjątku w bloku try/catch, jak automatycznie wznowić?
- 24. Owiń zapytanie Linq w bloku try/catch, używając deklaracji metody
- 25. Lepiej jest mieć zsynchronizowany blok wewnątrz bloku try lub blok try wewnątrz zsynchronizowanego bloku?
- 26. Czy umieszczenie bloku try-catch wpływa na wydajność?
- 27. Czy blokuje się sed?
- 28. VB.NET Try/Catch/When - Trzymaj się z daleka, czy może z niego korzystać?
- 29. spróbuj i złap w php powinienem wrócić w bloku try?
- 30. Zrozumienie try..catch w JavaScript
Nawet jeśli istnieje wyraźna instrukcja 'return' w bloku' try'? – Rogach
tak. [I te inne znaki, aby dopasować minimalną długość] –
Jedyny przypadek, w którym blok 'finally' nie jest wykonywany, jest wtedy, gdy' sys.exit() 'jest wywoływane w bloku' try' lub 'catch'. – axel22