但是如果finally语句之前我使用了跳转语句,跳转到其他页面,finally还会执行吗?
try{
}catch(){
}finally{
}
该ç»ææ¯ç¨æ¥ææå¼å¸¸ä¿¡æ¯ç ï¼å¼å¸¸æ¥æºäºtryåä¸ï¼ å¨catchä¸è¿è¡å¤ç finallyå¯ä»¥å¯¹èµæºè¿è¡éæ¾æå ¶ä»æä½
1. åå¦ å¨tryä¸æ²¡æå¼å¸¸äº§çï¼å¹¶return finally ä»ç¶ä¼æ§è¡ï¼ å°return çç»æä¿åï¼æ§è¡å®finallyå¨return
2 , å¨1çåºç¡ä¸ï¼å¦æ finallyä¸æåä¹return é£ä¸ªï¼tryä¸çreturnä¼å¤±æ ï¼æ§è¡finallyä¸return
3. å¦ætry æè catchï¼æå¼å¸¸çæ åµä¸ï¼ä¸ä¸æ¯return èæ¯åçæ¯ System.exit(0); é£ä¹finallyæ¤æ¶ä¸æ§è¡ï¼ç´æ¥å ³éèææºã
4 .å¨2çåºç¡ä¸ï¼å¦æfinallyä¸åµå¥ try finallyç»æçè¯ ï¼æ§è¡å® finallyéé¢çtry å¨æ§è¡ finallyä¸çfinally
5 . å¨4çåºç¡ä¸ å¦ä¸ä»£ç ä¼äº§çé误
try{
}catch(){
}finally{
try{
}catch(){
}finally{
return 1;
}
return 0;
}
å 为finallyè¦æ±ä»£ç å¿ é¡»è¢«æ§è¡ï¼èææºæ¤æ¶ä¸ç¥é return1å¿ é¡»è¢«æ§è¡ï¼è¿æ¯return 0 å¿ é¡»è¢«æ§è¡ï¼å 为 ä»ä¹é½å¨finallyä¸ ï¼å¸æå¯¹ä½ ææ帮å©
}catch(){
}finally{
}
该ç»ææ¯ç¨æ¥ææå¼å¸¸ä¿¡æ¯ç ï¼å¼å¸¸æ¥æºäºtryåä¸ï¼ å¨catchä¸è¿è¡å¤ç finallyå¯ä»¥å¯¹èµæºè¿è¡éæ¾æå ¶ä»æä½
1. åå¦ å¨tryä¸æ²¡æå¼å¸¸äº§çï¼å¹¶return finally ä»ç¶ä¼æ§è¡ï¼ å°return çç»æä¿åï¼æ§è¡å®finallyå¨return
2 , å¨1çåºç¡ä¸ï¼å¦æ finallyä¸æåä¹return é£ä¸ªï¼tryä¸çreturnä¼å¤±æ ï¼æ§è¡finallyä¸return
3. å¦ætry æè catchï¼æå¼å¸¸çæ åµä¸ï¼ä¸ä¸æ¯return èæ¯åçæ¯ System.exit(0); é£ä¹finallyæ¤æ¶ä¸æ§è¡ï¼ç´æ¥å ³éèææºã
4 .å¨2çåºç¡ä¸ï¼å¦æfinallyä¸åµå¥ try finallyç»æçè¯ ï¼æ§è¡å® finallyéé¢çtry å¨æ§è¡ finallyä¸çfinally
5 . å¨4çåºç¡ä¸ å¦ä¸ä»£ç ä¼äº§çé误
try{
}catch(){
}finally{
try{
}catch(){
}finally{
return 1;
}
return 0;
}
å 为finallyè¦æ±ä»£ç å¿ é¡»è¢«æ§è¡ï¼èææºæ¤æ¶ä¸ç¥é return1å¿ é¡»è¢«æ§è¡ï¼è¿æ¯return 0 å¿ é¡»è¢«æ§è¡ï¼å 为 ä»ä¹é½å¨finallyä¸ ï¼å¸æå¯¹ä½ ææ帮å©
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-03-08
当然会执行,finally的意思就是你前面所有的语句都执行完了才会执行。
第2个回答 2013-03-09
finally是无论如何都会执行的,只是执行的顺序不同罢了。
第3个回答 2013-03-08
finally中的语句暂时不会执行。如果你跳转到其他的代码段,这个try中的代码可看做主调方法,跳转到的代码可看做被调方法。程序的大方向是由上到下进行,如果读到这一引起跳转的语句跳转到其他代码后,必然先开始执行其他的代码,然后其他的代码执行完了,也就是被调方法一行行都执行完了,那么返回主调方法,继续try下面的语句的执行。如果这时候恰巧try中的语句也都执行完了,那么系统这个时候才会自动执行finally中的语句。
finally里面的语句是为了对资源统一进行管理。设想引起跳转的那一句代码要跳转到其他的代码去执行,这一段代码实则可以看做try里面一个完成程序目的一段分支分支,不会一跳转就自动执行finally。
你可以做一个测试,引起跳转的这句话这样写:new A(构造实参).launch(),新new一个A对象并执行launch方法。可能构造方法还需要try里面的参数,如果finally一下子关了肯定不符合逻辑。你可以在launch中写一句输出的话,finally中写一句输出的话,看看那个先执行。
finally里面的语句是为了对资源统一进行管理。设想引起跳转的那一句代码要跳转到其他的代码去执行,这一段代码实则可以看做try里面一个完成程序目的一段分支分支,不会一跳转就自动执行finally。
你可以做一个测试,引起跳转的这句话这样写:new A(构造实参).launch(),新new一个A对象并执行launch方法。可能构造方法还需要try里面的参数,如果finally一下子关了肯定不符合逻辑。你可以在launch中写一句输出的话,finally中写一句输出的话,看看那个先执行。
第4个回答 2013-03-21
不管你前面有什么,finally必然执行
第5个回答 2013-03-14
finally语句就算跳转到其他页面,还是会执行的