Este artigo estuda principalmente a relação entre finalmente e retorno em Java. A introdução e exemplos específicos são mostrados abaixo.
1. Existe uma declaração como System.Exit (0) no bloco de tentativa. Como termina a JVM Java Virtual Machine, até a JVM é interrompida e todas as extremidades. Obviamente, finalmente as declarações não serão executadas.
2. Em outros casos, finalmente as declarações serão inevitavelmente executadas. Portanto, algumas operações de liberação de recursos podem ser executadas aqui.
(1) O retorno finalmente substituirá o retorno em Try/Catch.
(2) Haverá um aviso ao escrever uma declaração de retorno finalmente, porque impedirá que a função jogue uma exceção e a devolva normalmente.
pacote com.demo.test; classe pública finalmente e return {private estático void finalmente e o Return () {try {System.out.println ("Finalmente e o Return -> Try"); retornar;} Catch (Exceção e) {System.out.println ("Finalmente o AndryRetn -" Catch); Finalmente {System.out.out.out.println ("Finalmente o Andryrenn -" Catch); Finalmente {System.out.out.out.out.out. Finalmente ");}} private estático void finalmente eCatchTurn () {try {System.out.println (" Finalmente eCatchReturn -> Try "); lançar nova exceção ();} Catch (Exceção e) {System.out.println ("Finalmente eCatchrenGurn -> Catch"); retornar;} finalmente {System.out.println ("Finalmente eCatchreturn -> Finalmente");}} // A declaração final é executada após a declaração de devolução da tentativa e antes que o retorno seja. String estática privada TryReturn () {String str = "Inicializada"; Try {System.out.println ("TryReturn -> Try"); str = "Try"; return str;} Catch (exceção e) {System.out.println ("Tryreturn -> Catch"); str = "Catch";} finalmente {System.Int.Intrintl (Tryrengnn); null;} String estática privada TryReturNandFinallyReturn () {String str = "Inicializada"; Try {System.out.println ("TrySeReturNandFinallyReturn -> Try"); str = "TryReTrAndFinallylynlyTurn; {System.out.println ("TryrenuRandFinallyReturn -> Finalmente");/ * * Aviso: Finalmente, o bloco não será concluído normalmente * se a instrução de retorno estiver incluída no bloco Finalmente, mesmo que o bloco de captura anterior se rependa, a declaração que chama o método não obterá a exceção reta o bloco de captura, mas receberá o valor de retorno do finalmente o bloco e o bloco finalmente e a exceção da exceção. */str = "Finalmente"; retornar str;}} String estática privada TrythrowRowandfinallyReturn () lança exceção {String str = "Inicializada"; tente {System.out.println ("TrythrowandfinallallyReturn -> Try"); str = "Try"; Throw New Exception ();} Catch (Exception e) {System.Ust.out.Int. = "Catch"; lança nova exceção ();} finalmente {System.out.println ("TryThrowandfinallallyrengurn-> Finalmente");/ * * Aviso: finalmente o bloco não conclui normalmente * se o bloqueio finalmente contiver a declaração de retorno, mas o bloqueio de captura anterior, mas a reivindicação de exceção não será a exceção. */str = "finalmente"; return str;}} private estático void finalmente eruntimeException () {try {System.out.println ("Finalmente eruntimeException -> Try"); lançar novo RunTimeException ();} Catch (Exceção e) {System.out.println ("Finalmente ,runtimeException -> Catch");} finalmente {System.out.println ("Finalmente o AndRuntimeException -> finalmente");}}} private void finalmente ") {Try {System.ut.PrintLn);}}}} estático Finalmente" System.Exit (0); termina a JVM Java Virtual Machine JVM. Até a JVM está parada e tudo está terminado. Obviamente, finalmente as declarações não serão executadas. System.Exit (0);} Catch (Exceção e) {System.out.println ("Finalmente Andexit -> Catch");} Finalmente {System.out.println ("Finalmente Andexit -> Finalmente");}} public static void main (string [] args) {finalmente e finalmente ();); Finalmente eCatchTurn (); System.out.println (); System.out.println ("TryReturn Return ->" + TryStrurn ()); System.out.println (); System.out.println ("TryReTurnuRet Return ->" + TryTrenuncigaNallyTurtur (); System.out.out.out.out.out.out.outfinallyren Return -> " + {System.out.println ("TrythrowandfinallylyRet Return ->" + TryThrowandfinallyReturn ());} Catch (Exceção e) {E.PrintStackTrace ();} System.out.println (); Finalmente eRuntimeException (); System.out.println (); Finalmente Andexit ();}}Resultados da demonstração:
O exposto acima é o conteúdo inteiro deste artigo sobre a análise de finalmente e o retorno em Java. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!