小白问JAVA考题

[复制链接]
查看11 | 回复2 | 2009-10-20 12:40:26 | 显示全部楼层 |阅读模式
public class testFinally { public static int test(){ try{
System.out.println("try"); }catch(Exception exp){
System.out.println("catch");
return 0; }finally{
System.out.println("finally"); } System.out.println("after finally"); return 1; } public static void main(String[] args) { System.out.println(test()); } } 运行结果: try finally after finally 1 结论1:当try里面的代码没有异常的时候,会执行该try块对应的finally块,并继续执行finally之后的代码 public class testFinally { public static int test(){ try{
System.out.println("try");
int i = 0;
int r = 7/i; }catch(Exception exp){
System.out.println("catch");
return 0; }finally{
System.out.println("finally");
//return 2; } System.out.println("after finally"); return 1; } public static void main(String[] args) { System.out.println(test()); } } 运行结果: try catch finally 0 结论2:当try里面的代码出现异常的时候,会执行该try块对应的catch块和finally块,且即使catch中有返回finally也是要执行。法调用是执行完finally中的语句,再返回catch中的return。 public class testFinally { public static int test(){ try{
System.out.println("try");
int i = 0;
int r = 7/i; }catch(Exception exp){
System.out.println("catch");
return 0; }finally{
System.out.println("finally");
return 2; } } public static void main(String[] args) { System.out.println(test()); } } 运行结果: try catch finally 2 结论3:相对于结论2,finally中如果有return的情况,那么即使catch中有return,这个return也不起作用,该方法调用要到finally中的return才返回 public class testFinally { public static int test(){ try{
System.out.println("try");
int i = 0;
int r = 7/i; }catch(Exception exp){
System.out.println("catch");
return 0; }finally{
System.out.println("finally");
return 2; } System.out.println("after finally"); return 1; } public static void main(String[] args) { System.out.println(test()); } } 编译不通过 System.out.println("after finally"); return 1; 为unreachable statement
回复

使用道具 举报

千问 | 2009-10-20 12:40:26 | 显示全部楼层
you win i never
回复

使用道具 举报

千问 | 2009-10-20 12:40:26 | 显示全部楼层
Iwillwin
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行