Este artículo estudia principalmente la relación entre finalmente y retorno en Java. La introducción específica y los ejemplos se muestran a continuación.
1. Hay una declaración como System.exit (0) en el bloque de try. Dado que termina la máquina virtual Java JVM, incluso el JVM se detiene y todos los extremos. Por supuesto, finalmente no se ejecutarán declaraciones.
2. En otros casos, finalmente se ejecutarán las declaraciones inevitablemente. Por lo tanto, algunas operaciones de lanzamiento de recursos se pueden realizar aquí.
(1) El retorno finalmente anulará el retorno en Try/Catch.
(2) Habrá una advertencia al escribir una declaración de regreso finalmente, porque evitará que la función arroje una excepción y la devuelva normalmente.
paquete com.demo.test; public class FininentAndreturn {private static void finalmente yetreturn () {try {system.out.println ("finalmente y yetreturn -> try"); return;} catch (excepción e) {System.out.println ("Finalmente y y y en el ritmo -> atrapan");} finalmente {System.out.println ("finalmente -" Finalmente -" Finalmente ");}} Void estático privado Finalmente y CatchReturn () {try {System.out.println (" Finalmente yCatchReturn -> try "); Throw New Exception ();} Catch (Exception E) {System.out.println ("Finalmente yCatchReturn -> Catch"); return;} Finalmente {System.out.println ("Finalmente y Catchreturn -> finalmente");}} // La declaración final se ejecuta después de la declaración de retorno de la prueba, y antes del regreso se devuelve. cadena estática privada tryreturn () {string str = "inicialized"; try {system.out.println ("tryreturn -> try"); str = "intente"; return str;} catch (excepción e) {system.println ("tryreturn -> str = str =" catch ";} finalmente {system.println (" tryretretrurn -> nulo;} cadena estática privada tryreturnandfinallyReturn () {string str = "inicialized"; try {system.out.println ("tryreturnandfinallyReTurn -> intit"); str = "try"; return str;} capt (excepción e) {system.out.println ("tryreturnandfinallyreturn -> catch"); str = ";} finalmente" Catch ";} {System.out.println ("TryreturnandFinallyReRurn -> finalmente");/ * * ADVERTENCIA: Finalmente el bloque no se completa normalmente * Si la instrucción de retorno se incluye en el bloque Finalmente, incluso si el bloqueo anterior del bloque de captura, la declaración que llama el método no obtendrá las retagas de excepción por el bloque de captura, pero obtendrá el valor de retorno del bloque de retorno y no captará la excepción. */str = "finalmente"; return str;}} cadena estática privada tryThrowandFinallyReTurn () lanza la excepción {string str = "inicialized"; try {system.out.println ("tryThrowandFinallyReTurn -> try"); str = "try"; tirar nueva excepción ();} Catch (Exception e) {System.out.println ("trythrowandfeNffUntfUnty = "Catch"; Throw New Exception ();} Finalmente {System.out.println ("TryThRowandFinallyReTurn-> Finalmente");/ * * ADVERTENCIA: Finalmente el bloque no se complete normalmente * si el bloque de finalmente contiene una declaración de retorno, incluso si el bloque de captura anterior retrocede la excepción, la declaración llamando el método no se obtendrá la excepción de la excepción. */str = "finalmente"; return str;}} private static void finalmente yruntimeException () {try {system.out.println ("finalmente yruntimeException -> try"); Throw New RuntimeException ();} Catch (Exception e) {System.out.println ("Finalmente yRunteException -> Catch");} Finalmente {System.out.println ("Finalmente yRunteException -> finalmente");}} privado estático Void FinalmenteAndexit () {system.out.println ("finalmente y" finalmente -}} void privado void. System.exit (0); Termina la máquina virtual Java JVM. Incluso el JVM se detiene y todo está terminado. Por supuesto, finalmente no se ejecutarán declaraciones. System.Exit (0);} Catch (Exception e) {System.out.println ("finalmenteAndexit -> catch");} finalmente {system.out.println ("finalmente -exit -> finalmente");}} public static void main (string [] args) {finalmente yandyryreturn (); system.rout.println (); finallyAndCatchReturn();System.out.println();System.out.println("tryReturn return -> " + tryReturn());System.out.println();System.out.println("tryReturnAndFinallyReturn return -> " + tryReturnAndFinallyReturn());System.out.println();try {System.out.println ("TryThrowandFinallyRally Return ->" + TryThRowandFinallyReNn ());} Catch (Exception e) {E.PrintStackTrace ();} System.out.println (); finalmente yruntimeException (); System.out.println (); FinalmenteAndexit ();}}Resultados de la demostración:
Lo anterior es todo el contenido de este artículo sobre el análisis de finalmente y retorno en Java. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!