finally程式碼塊中的程式碼什麼時候執行
阿新 • • 發佈:2019-01-30
如果try catch 中含有return語句,會先執行finally中的語句
try{
System.out.println("try中的語句");
return 0;
}catch(excption e){
System.out.println("catch中的語句");
return 0;
}finally{
System.out.println("finally中的語句");
}
/**
try中的語句
finally中的語句
*/
如果finally中含有return語句,則該語句會覆蓋try catch中的語句
int a = 2;
try{
System.out.println("try中的語句");
}catch(excption e){
System.out.println("catch中的語句");
}finally{
a = 10;
System.out.println("finally中的語句");
}
System.out.println(a);//結果為2,值並沒有改變
原因:由於一個變數都儲存在棧中,當函式結束後,對應的棧就會收回,因此在finally中改變基本資料型別的資料
是不起作用的,但是可以改變引用型別的值
##############################################################
finally中的語句是否一定都會執行
答:不一定
eg:
test(){
int i = 5/0;//此時便丟擲異常,無論後面跟什麼都不會執行
try{
}catch(){
}
finally{
}
}
eg:
test2(){
try{
s.o.p("start");
System.exit(0);//該句便強制退出程式
}
}
try{
System.out.println("try中的語句");
return 0;
}catch(excption e){
System.out.println("catch中的語句");
return 0;
}finally{
System.out.println("finally中的語句");
}
/**
try中的語句
finally中的語句
*/
如果finally中含有return語句,則該語句會覆蓋try catch中的語句
int a = 2;
try{
System.out.println("try中的語句");
}catch(excption e){
System.out.println("catch中的語句");
}finally{
a = 10;
System.out.println("finally中的語句");
}
System.out.println(a);//結果為2,值並沒有改變
原因:由於一個變數都儲存在棧中,當函式結束後,對應的棧就會收回,因此在finally中改變基本資料型別的資料
是不起作用的,但是可以改變引用型別的值
##############################################################
finally中的語句是否一定都會執行
答:不一定
eg:
test(){
int i = 5/0;//此時便丟擲異常,無論後面跟什麼都不會執行
try{
}catch(){
}
finally{
}
}
eg:
test2(){
try{
s.o.p("start");
System.exit(0);//該句便強制退出程式
}
}