最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java

2023-07-20 12:17 作者:耀有上鏡心88  | 我要投稿

在Java語言的異常處理中,finally塊的作用就是為了保證無論出現(xiàn)什么情況,finally塊里的代碼一定會被執(zhí)行。

由于程序執(zhí)行return就意味著結(jié)束對當前函數(shù)的調(diào)用并跳出這個函數(shù)體,因此任何語句要執(zhí)行都只能在return前執(zhí)行(除非碰到exit函數(shù)),因此finally塊里的代碼也是在return之前執(zhí)行的。

此外,如果try-finally或者catch-finally中都有return,那么finally塊中的return將會覆蓋別處的return語句,最終返回到調(diào)用者那里的是finally中return的值。

面試題舉例:在finally塊中改變基本數(shù)據(jù)類型、引用類型對比。

?public class Test{

public static int testFinally1(){

int result = 1;

try {

result = 2;

return result;

} catch (Exception e) {

return 0;

}finally{

result = 3;

System.out.println("execute finally1");

}

}

public static StringBuffer testFinally2(){

StringBuffer s = new StringBuffer("Hello");

try {

return s;

} catch (Exception e) {

return null;

}finally{

s.append(" World");

System.out.println("execute finally2");

????????????????}

}

public static void main(String[] args){

// 測試基本數(shù)據(jù)

int result = testFinally1();

System.out.println(result);

//測試引用數(shù)據(jù)類型

StringBuffer resultRef = testFinally2();

System.out.println(resultRef);

}

}

運行結(jié)果:

execute finally1

2

execute finally2

Hello World

?結(jié)果解釋:程序在執(zhí)行到return時會首先將返回值存儲在一個指定的位置,其次去執(zhí)行finally塊,最后再返回。在方法testFinally1中調(diào)用return前,先把result的值1存儲在一個指定的位置,然后再去執(zhí)行finally塊中的代碼,此時修改result的值將不會影響到程序的返回結(jié)果。

testFinally2中,在調(diào)用return前先把s存儲到一個指定的位置,由于s為引用類型,因此在finally中修改s將會修改程序的返回結(jié)果。

?

拓展:出現(xiàn)在Java程序中的finally塊是不是一定會被執(zhí)行?

答案:不一定。

下面給出兩個finally塊不會被執(zhí)行的例子:

(1)、當程序進入try塊之前就出現(xiàn)異常時,會直接結(jié)束,不會執(zhí)行finally塊中的代碼。


(2)、當程序在try塊中強制退出時也不會去執(zhí)行finally塊中的代碼,示例如下:

例如try塊中通過調(diào)用System.exit(0)強制退出了程序,因此導(dǎo)致finally塊中的代碼沒有被執(zhí)行。

千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java的評論 (共 條)

分享到微博請遵守國家法律
容城县| 利辛县| 邯郸县| 定远县| 察雅县| 宿松县| 温州市| 东阿县| 博爱县| 邛崃市| 聂拉木县| 息烽县| 宣威市| 东乡| 页游| 梧州市| 乐山市| 徐闻县| 麻城市| 鄂伦春自治旗| 连城县| 临洮县| 西乡县| 噶尔县| 盐源县| 福鼎市| 攀枝花市| 通州区| 牡丹江市| 石台县| 邻水| 布尔津县| 武隆县| 侯马市| 佳木斯市| 沁阳市| 保靖县| 汉沽区| 红桥区| 乌拉特前旗| 科技|