Artikel ini terutama mempelajari hubungan antara akhirnya dan kembali di Java. Pendahuluan dan contoh spesifik ditunjukkan di bawah ini.
1. Ada pernyataan seperti System.exit (0) di blok coba. Karena itu mengakhiri JVM mesin virtual Java, bahkan JVM dihentikan dan semuanya berakhir. Tentu saja, akhirnya pernyataan tidak akan dieksekusi.
2. Dalam kasus lain, akhirnya pernyataan pasti akan dieksekusi. Oleh karena itu, beberapa operasi rilis sumber daya dapat dilakukan di sini.
(1) Pengembalian di akhirnya akan mengesampingkan pengembalian di TREE/Catch.
(2) Akan ada peringatan saat menulis pernyataan pengembalian akhirnya, karena itu akan mencegah fungsi dari melempar pengecualian dan mengembalikannya secara normal.
package com.demo.test;public class FinallyAndReturn {private static void finallyAndTryReturn() {try {System.out.println("finallyAndTryReturn -> try");return;}catch (Exception e) {System.out.println("finallyAndTryReturn -> catch");} finally {System.out.println("finallyAndTryReturn -> Akhirnya ");}} private static void akhirnya danchretReturn () {coba {System.out.println (" akhirnya danchretReturn -> coba "); lempar pengecualian baru ();} catch (Exception e) {System.out.println ("akhirnya danchreturn -> catch"); return;} akhirnya {System.out.println ("akhirnya danchreturn -> akhirnya");}} // Pernyataan terakhir dieksekusi setelah pernyataan pengembalian percobaan, dan sebelum pengembalian. Private static string tryReturn () {string str = "initialized"; coba {System.out.println ("tryreturn -> try"); str = "try"; return str;} catch (pengecualian e) {System.out.println ("tryreturn -> Catch"); str = "catch";} akhirnya {System.out.out.print -"));"); string = "catch";} akhirnya {out.out.out.print -"));"); string = "catch =" catch ";} System.out.out.out.print (")); ");") {} System {oTLN; null;}private static String tryReturnAndFinallyReturn() {String str = "initialized";try {System.out.println("tryReturnAndFinallyReturn -> try");str = "try";return str;}catch (Exception e) {System.out.println("tryReturnAndFinallyReturn -> catch");str = "catch";} finally {System.out.println ("TryReturnandFinallyReturn -> akhirnya");/ * * Peringatan: Akhirnya blok tidak selesai secara normal * jika pernyataan pengembalian termasuk dalam blok akhirnya, bahkan jika blok tangkapan sebelumnya retags, pernyataan yang memanggil metode tidak akan mendapatkan pengecualian retags dengan blok tangkapan, tetapi akan mendapatkan nilai pengembalian dan akan menangkap pengecualian. */str = "akhirnya"; return str;}} private static string trythrowandfinallyReturn () melempar Exception {string str = "inisialisasi"; coba {System.out.println ("trythrowandfinallyReturn -> try"); str = "try"; lempar pengecualian baru ();} catch (pengecualian e) {{{"{lempar ();} Catch () {{lempar ();} Catch (Exception E) {" {lempar. " Catch "); str =" Catch "; lempar pengecualian baru ();} akhirnya {System.out.println (" TRYTHOWANDFINALLYRETURN-> AKHIRNYA ");/ * * PERINGATAN: Akhirnya Blok tidak selesai secara normal * jika blok akhirnya tidak akan ada yang akan dikembalikan, bahkan jika blok tangkapan kembali, melontarkan pengecualian, pernyataan yang memanggil metode yang tidak akan akan dikembalikan akan kembali. pengecualian. */str = "akhirnya"; return str;}} private static void akhirnyaDrunTimeException () {try {System.out.println ("akhirnyaDrunTimeException -> coba"); Lempar runtimeException baru ();} catch (Exception e) {System.out.println ("akhirnyaDrunTimeException -> Catch");} akhirnya {System.out.println ("Akhirnya { -) {" System. coba "); // System.exit (0); mengakhiri JVM mesin virtual Java. Bahkan JVM dihentikan, dan semuanya sudah selesai. Tentu saja, akhirnya pernyataan tidak akan dieksekusi. System.exit (0);} catch (Exception e) {System.out.println ("akhirnyaDexit -> Catch");} akhirnya {System.out.println ("akhirnyaDexit -> akhirnya");}} public static void (string [] args) {akhirnya dan tryryReturn (); System.out.print. akhirnya danchreturn (); System.out.println (); System.out.println ("TryReturn return ->" + tryreturn ()); System.out.println (); System.out.println ("tryreturnandfinallyReturn return -" + tryreturnandfineLally ()); System.); System.); System.); System.); SystemnReturn ();); System.);); SystemReturn (); System.);); System.);); SystemnReturn ();); System.);); System.);); SystemnReturn ();); System.);); SystemnoToUt ();); SystemnReturn (); {System.out.println ("TRYTHOWANDFINALLYRETURN kembali ->" + TRYTHOWANDFINALLYRETURN ());} Catch (Exception e) {e.printStackTrace ();} System.out.println (); AkhirnyaDrunTimeException (); System.out.println (); AleversyAndExit ();}}Hasil demonstrasi:
Di atas adalah seluruh konten artikel ini tentang analisis akhirnya dan kembali di Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!