乙個關於finnally的執行順序的特別說明

2021-08-25 18:57:47 字數 908 閱讀 1569

今天, 讀到一段原始碼,對finally的執行順序產生了一點疑惑, 原始碼如下:

public static void test() finally

}system.out.println("end");

}

在test方法中, finally是何時執行的呢?

執行結果是: 在"begin"之後, "end"之前, 執行了10次"finally " + i .

這與我之前對finally的執行順序有很大差別, 在之前我一直認為finally語句塊是方法中最後執行的. 但是對test方法來說, 以前的那種理解明顯是乙個悖論, 是不成立的.

接下來, 我編寫了如下兩段**

public static void test1 () finally

} system.out.println("end");

}public static void test2 () finally

} system.out.println("end");

}

在觀察了這兩段**的執行結果與最初的test方法的執行結果十分類似, finally語句塊都是在"begin"和"end"之間執行的.

由此我得出另乙個對finally語句塊執行順序的結論:"[size=large][color=red][b]finally語句塊是在該finally語句塊上一層語句塊的最末執行的[/b][/color][/size]".

test 方法中finally語句塊的上一層語句塊是for語句塊;

test1 方法中finally語句塊的上一層語句塊是if語句塊;

test2 方法中finally語句塊的上一層語句塊由{}構成的;

特記載於此.

關於乙個function內執行2個ajax

function error function ajax type post,url url2,success function error function 平時沒有注意過關於2個ajax在一起後得出結果先後順序。我重新整理幾次結果顯示 可能是第乙個ajax先執行也可能第二個先完成結果。ajax請...

乙個關於 的謎題

乙個關於 的謎題 今天在看書過程中發現了乙個問題,還挺有意思的,分享給大家。下面兩個 python 表示式會產生什麼結果?t 1,2,3,4 t 2 5,6 給四個備選答案 t變成 1,2,3,4,5,6 因為 tuple 不支援對它的元素賦值,所以會丟擲typeerror異常。以上兩個都不是。以上...

關於乙個加法優化的乙個地方

include include include base.h int main int argc,char argv,char envp 下面是彙編 01291000 55 push ebp 01291001 8bec mov ebp,esp 01291003 56 push esi 0129100...