最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中finally和return的關(guān)系實(shí)例解析

 更新時(shí)間:2018年02月01日 14:01:00   作者:司馬懿字仲達(dá)  
這篇文章主要介紹了Java中finally和return的關(guān)系實(shí)例解析,總結(jié)了二者的關(guān)系,然后分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下

本文研究的主要是Java中finally和return的關(guān)系,具體介紹和實(shí)例如下所示。

finally 和 return 關(guān)系的總結(jié)

1.try塊中有System.exit(0)這樣的語(yǔ)句,由于它是終止Java虛擬機(jī)JVM的,連JVM都停止了,所有都結(jié)束了,當(dāng)然finally語(yǔ)句也不會(huì)被執(zhí)行到。
2.其它情況下,finally語(yǔ)句都必然會(huì)被執(zhí)行。因此可以在這里執(zhí)行一些資源的釋放操作。

(1)finally中的return會(huì)覆蓋try/catch中的renturn。
(2)在finally中寫(xiě)return語(yǔ)句會(huì)有警告,因?yàn)樗鼤?huì)阻止函數(shù)拋出異常,而改為正常返回。

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 -> finally");
		}
	}
	private static void finallyAndCatchReturn() {
		try {
			System.out.println("finallyAndCatchReturn -> try");
			throw new Exception();
		}
		catch (Exception e) {
			System.out.println("finallyAndCatchReturn -> catch");
			return;
		}
		finally {
			System.out.println("finallyAndCatchReturn -> finally");
		}
	}
	// finally語(yǔ)句是在try的return語(yǔ)句執(zhí)行之后,return返回之前執(zhí)行。
	private static String tryReturn() {
		String str = "initialized";
		try {
			System.out.println("tryReturn -> try");
			str = "try";
			return str;
		}
		catch (Exception e) {
			System.out.println("tryReturn -> catch");
			str = "catch";
		}
		finally {
			System.out.println("tryReturn -> finally");
			str = "finally";
		}
		return 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 -> finally");
			/*
       * Warning: finally block does not complete normally
       * 如果finally塊中包含了return語(yǔ)句,即使前面的catch塊重新拋出了異常,則調(diào)用該方法的語(yǔ)句也不會(huì)獲得catch塊重新拋出的異常,而是會(huì)得到finally塊的返回值,并且不會(huì)捕獲異常。
       */
			str = "finally";
			return str;
		}
	}
	private static String tryThrowAndFinallyReturn() throws Exception {
		String str = "initialized";
		try {
			System.out.println("tryThrowAndFinallyReturn -> try");
			str = "try";
			throw new Exception();
		}
		catch (Exception e) {
			System.out.println("tryThrowAndFinallyReturn -> catch");
			str = "catch";
			throw new Exception();
		}
		finally {
			System.out.println("tryThrowAndFinallyReturn -> finally");
			/*
       * Warning: finally block does not complete normally
       * 如果finally塊中包含了return語(yǔ)句,即使前面的catch塊重新拋出了異常,則調(diào)用該方法的語(yǔ)句也不會(huì)獲得catch塊重新拋出的異常,而是會(huì)得到finally塊的返回值,并且不會(huì)捕獲異常。
       */
			str = "finally";
			return str;
		}
	}
	private static void finallyAndRuntimeException() {
		try {
			System.out.println("finallyAndRuntimeException -> try");
			throw new RuntimeException();
		}
		catch (Exception e) {
			System.out.println("finallyAndRuntimeException -> catch");
		}
		finally {
			System.out.println("finallyAndRuntimeException -> finally");
		}
	}
	private static void finallyAndExit() {
		try {
			System.out.println("finallyAndExit -> try");
			// System.exit(0);是終止Java虛擬機(jī)JVM的,連JVM都停止了,所有都結(jié)束了,當(dāng)然finally語(yǔ)句也不會(huì)被執(zhí)行到。
			System.exit(0);
		}
		catch (Exception e) {
			System.out.println("finallyAndExit -> catch");
		}
		finally {
			System.out.println("finallyAndExit -> finally");
		}
	}
	public static void main(String[] args) {
		finallyAndTryReturn();
		System.out.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("tryThrowAndFinallyReturn return -> " + tryThrowAndFinallyReturn());
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println();
		finallyAndRuntimeException();
		System.out.println();
		finallyAndExit();
	}
}

演示結(jié)果:

總結(jié)

以上就是本文關(guān)于Java中finally和return的關(guān)系實(shí)例解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • java實(shí)現(xiàn)馬踏棋盤算法(騎士周游問(wèn)題)

    java實(shí)現(xiàn)馬踏棋盤算法(騎士周游問(wèn)題)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)馬踏棋盤算法,解決騎士周游問(wèn)題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • java實(shí)現(xiàn)簡(jiǎn)單銀行ATM系統(tǒng)

    java實(shí)現(xiàn)簡(jiǎn)單銀行ATM系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單銀行ATM系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • intellij idea 2021.2 打包并上傳運(yùn)行spring boot項(xiàng)目的詳細(xì)過(guò)程(spring boot 2.5.4)

    intellij idea 2021.2 打包并上傳運(yùn)行spring boot項(xiàng)目的詳細(xì)過(guò)程(spring boot 2

    這篇文章主要介紹了intellij idea 2021.2 打包并上傳運(yùn)行一個(gè)spring boot項(xiàng)目(spring boot 2.5.4),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • SpringBoot 枚舉類型的自動(dòng)轉(zhuǎn)換的實(shí)現(xiàn)

    SpringBoot 枚舉類型的自動(dòng)轉(zhuǎn)換的實(shí)現(xiàn)

    一般我們?cè)跀?shù)據(jù)庫(kù)都會(huì)定義數(shù)值型的枚舉常量,不管是序列化還是反序列化都是需要我們手動(dòng)去轉(zhuǎn)換成枚舉類型的,本文主要介紹了Spring Boot 枚舉類型的自動(dòng)轉(zhuǎn)換,感興趣的可以了解一下
    2022-03-03
  • 淺析關(guān)于java的序列化和反序列化

    淺析關(guān)于java的序列化和反序列化

    這篇文章主要介紹了淺析關(guān)于java的序列化和反序列化,所謂序列化,就是把要傳輸?shù)膶?duì)象以及相關(guān)信息轉(zhuǎn)換成字節(jié)數(shù)組進(jìn)行存儲(chǔ)的過(guò)程,而反序列化就是將字節(jié)數(shù)組再轉(zhuǎn)回對(duì)象的過(guò)程,需要的朋友可以參考下
    2023-07-07
  • Java8深入學(xué)習(xí)系列(三)你可能忽略了的新特性

    Java8深入學(xué)習(xí)系列(三)你可能忽略了的新特性

    一提到Java 8就只能聽(tīng)到lambda,但這不過(guò)是其中的一個(gè)而已,Java 8還有許多新的特性,有一些功能強(qiáng)大的新類或者新的用法,還有一些功能則是早就應(yīng)該加到Java里了,所以下面這篇文章主要給大家介紹了關(guān)于Java8中大家可能忽略了的一些新特性,需要的朋友可以參考下。
    2017-08-08
  • java 讀取zip文件的兩種方式示例詳解

    java 讀取zip文件的兩種方式示例詳解

    ZIP(壓縮文件)是一種常見(jiàn)的文件格式,在Java中可以使用java.util.zip包提供的API來(lái)讀取和處理ZIP文件,本文將介紹如何使用Java讀取ZIP文件,并提供代碼示例,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • spring-retry組件的使用教程

    spring-retry組件的使用教程

    Spring Retry的主要目的是為了提高系統(tǒng)的可靠性和容錯(cuò)性,當(dāng)方法調(diào)用失敗時(shí),Spring Retry可以在不影響系統(tǒng)性能的情況下,自動(dòng)進(jìn)行重試,從而減少故障對(duì)系統(tǒng)的影響,這篇文章主要介紹了spring-retry組件的使用,需要的朋友可以參考下
    2023-06-06
  • 淺析Java中對(duì)稱與非對(duì)稱加密算法原理與使用

    淺析Java中對(duì)稱與非對(duì)稱加密算法原理與使用

    密碼學(xué)是研究編制密碼和破譯密碼的技術(shù)科學(xué)。這篇文章主要為大家介紹了Java中對(duì)稱與非對(duì)稱加密算法的原理與使用,感興趣的小伙伴可以了解一下
    2023-03-03
  • IntelliJ?IDEA運(yùn)行SpringBoot項(xiàng)目的詳細(xì)步驟

    IntelliJ?IDEA運(yùn)行SpringBoot項(xiàng)目的詳細(xì)步驟

    這篇文章主要介紹了IntelliJ?IDEA如何運(yùn)行SpringBoot項(xiàng)目,步驟一配置maven,步驟二配置JDK環(huán)境,緊接著通過(guò)步驟三檢查數(shù)據(jù)庫(kù)的配置,最后一步數(shù)據(jù)庫(kù)連接,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評(píng)論

绥德县| 剑河县| 卓资县| 达拉特旗| 宣城市| 高青县| 射阳县| 井冈山市| 阿合奇县| 邵东县| 天气| 彰化县| 苗栗市| 汉沽区| 吉安市| 连云港市| 平顶山市| 桑植县| 绿春县| 柘城县| 江阴市| 定结县| 昌图县| 江源县| 高台县| 泸定县| 颍上县| 南木林县| 云梦县| 牙克石市| 日喀则市| 大渡口区| 三明市| 枣强县| 南皮县| 常德市| 盐池县| 昌图县| 东乌珠穆沁旗| 鄂温| 徐水县|