Utilizzando una struttura try-catch-finally per recuperare un record del database, sembra che sia necessario restituire un valore all'interno di un blocco try
nel caso sia andato tutto bene (come nel caso di un'eccezione la fine della funzione non è pensata per essere raggiunti). Ma se ritorno all'interno di try
, è il codice finally
che deve essere raggiunto (per chiudere la connessione ecc.)?Il blocco `finally` è eseguito nel caso in cui ci sia` return` all'interno di un blocco `try` o` catch`?
risposta
Sì,
Il risultato della try/catch
espressione sarà l'ultima riga sia del blocco try
o catch
, ma il blocco finally
sarà sempre eseguire qualunque cosa
Sì.
Il punto di un finally
è quello di garantire che venga eseguito un codice di pulizia indipendentemente dal percorso utilizzato dal codice per uscire dal blocco try
. Succede al ritorno ordinario, quando viene lanciata un'eccezione e viene rilevata un'eccezione che non viene catturata da questo blocco try
. L'unica cosa che impedirà l'esecuzione è se il programma non è in grado di lasciare il blocco try
; un ciclo infinito al suo interno, o il processo viene ucciso con alcuni mezzi che impediscono il normale svolgimento dell'elaborazione, o qualcosa del genere. Sono abbastanza sicuro anche se si esce dal processo dal blocco try
che il blocco finally
verrà eseguito prima che il processo muoia effettivamente.
- 1. Utilizzare un blocco 'try-finally' senza blocco 'catch'
- 2. Il blocco try-catch-finally sincrono in node.js?
- 3. "ritorno" e "try-catch-finally" valutazione blocco in scala
- 4. È meglio avere un blocco sincronizzato all'interno di un blocco try o un blocco try all'interno di un blocco sincronizzato?
- 5. Ci sono problemi con l'utilizzo del blocco per un IDisposable all'interno di un blocco catch catch?
- 6. @try - blocco catch in Objective-c
- 7. che è più veloce - un blocco con o try/catch/finally
- 8. Se torno da un blocco try/finally in C#, il codice in definitiva viene sempre eseguito?
- 9. Eccezione nel blocco catch
- 10. Perché usare try {} finally {} con un blocco try vuoto?
- 11. Ritorno dal metodo, nel blocco "try" o dopo il blocco "catch"?
- 12. Pausa dal blocco try/catch
- 13. Come avvolgere un servizio Web nel blocco try/catch
- 14. lanciare un'eccezione nel blocco try anziché bloccare il blocco?
- 15. try catch in finally section
- 16. Response.Redirect eccezione all'interno del blocco try/catch
- 17. Come è possibile inizializzare l'oggetto val nel blocco catch try?
- 18. È valido avere finalmente blocco senza try e catch?
- 19. valore di ritorno di Java nel meccanismo try-catch-finally
- 20. come recuperare l'eccezione soppressa nel blocco 'try'?
- 21. aspettano in blocco catch
- 22. devo circondare fileInputStream.close con un blocco try/catch/finally? Com'è fatto?
- 23. Una buona soluzione per attendere in try/catch/finally?
- 24. Hai davvero bisogno del blocco 'finally'
- 25. Il posizionamento di un blocco try-catch influenza le prestazioni?
- 26. Perché il blocco catch di questo codice non viene eseguito?
- 27. Perché il blocco TRY-CATCH non è consentito nelle UDF?
- 28. Rottura di un loop for da un blocco catch
- 29. Chrome sospeso in caso di eccezione all'interno di un blocco try/catch, come riprendere automaticamente?
- 30. Quando devo usare il fine-blocco di Java try-catch-finally
Anche se esiste un'istruzione esplicita 'return' nel blocco' try'? – Rogach
si. [E questi altri caratteri per adattarsi alla lunghezza minima] –
L'unico caso in cui il blocco 'finally' non viene eseguito è quando' sys.exit() 'viene chiamato all'interno del blocco' try' o 'catch'. – axel22