try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
2016-08-22 17:01
411 查看
转自:http://wenku.baidu.com/link?url=JTwPXCYiIBkfqx0gzl0liVVDn94c8Qya6s5z8IfB3HXZxF4EFMDGQC-NnAjoBcDNuocNE_ceYfn08468lvrrdx8ZSFJCS_ndK6x8s3_lJXe
finally是一定会执行的
只有代码中有system.exit() 这一种情况 才不会执行finally
因为终止了虚拟机进程
finally会在return之前执行
如果在finally里面有return情况会更复杂
代码如下:
情况一:
package test;
public class Atest {
public int test(){
try {
System.out.println("aaa" );
return 123;
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("bbb" );
}
return 456;
}
public static void main(String[] args) {
Atest a = new Atest() ;
System.out.println(a.test());
}
}
执行结果:
aaa
bbb
123
情况二:
package test;
public class Atest {
public int test(){
try {
System.out.println("aaa" );
return 123;
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("bbb" );
return 456;
}
}
public static void main(String[] args) {
Atest a = new Atest() ;
System.out.println(a.test());
}
}
执行结果:
aaa
bbb
456
finally是一定会执行的
只有代码中有system.exit() 这一种情况 才不会执行finally
因为终止了虚拟机进程
finally会在return之前执行
如果在finally里面有return情况会更复杂
代码如下:
情况一:
package test;
public class Atest {
public int test(){
try {
System.out.println("aaa" );
return 123;
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("bbb" );
}
return 456;
}
public static void main(String[] args) {
Atest a = new Atest() ;
System.out.println(a.test());
}
}
执行结果:
aaa
bbb
123
情况二:
package test;
public class Atest {
public int test(){
try {
System.out.println("aaa" );
return 123;
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("bbb" );
return 456;
}
}
public static void main(String[] args) {
Atest a = new Atest() ;
System.out.println(a.test());
}
}
执行结果:
aaa
bbb
456
相关文章推荐
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行?在return前还是后?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- try{}里面有一个return语句,那么紧跟在这个try后的finally{}的code会不会被执行,什么时候被执行,在return前还是后?
- try {}里有一个 return 语句, 那么紧跟在这个 try 后的 finally {}里的 code会不会被执行,什么时候被执行,在 return 前还是后?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code 会不会被执行,什么时候被执行,在return前还是后?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?