黑马程序员技术交流社区
标题:
输出结果?
[打印本页]
作者:
张海洋
时间:
2013-3-23 09:22
标题:
输出结果?
本帖最后由 张海洋 于 2013-3-23 19:30 编辑
class Test
{
public static String output="";
public static void foo(int i)
{
try
{
if(i==1)
throw new Exception();
output+="1";
}
catch(Exception e)
{
output+="2";
return;
}
finally
{
output+="3";
}
output+="4";
}
public static void main(String args[])
{
foo(0);
System.out.println(output);
foo(1);
System.out.println(output);
}
}
作者:
罗海清
时间:
2013-3-23 09:39
class Test
{
public static String output="";
public static void foo(int i) 1 一
{
try
{
if(i==1)
throw new Exception(); 二
output+="1"; 2
}
catch(Exception e) 三
{
output+="2"; 四
return; 五
}
finally
{
output+="3"; 3 六
}
output+="4"; 4
}
public static void main(String args[])
{
foo(0);//看运行顺序序号(1234),所以输出的是134
System.out.println(output);
foo(1); ///看运行顺序序号(一二三四五六),因为output是静态的,所以得到的结果是:134+2+3=13423
System.out.println(output);
}
}
作者:
MyNameIs520
时间:
2013-3-23 10:28
public class RunDemo {
public static String output = "";
public static void foo(int i) {
try {
if (i == 1)
throw new Exception();
output += "1";
//相当于output = output+"1",完成字符串的拼接,output="1";
} catch (Exception e) {
output += "2";
return;
} finally {
output += "3";
}
output += "4";
}
public static void main(String args[]) {
foo(0);
System.out.println(output);
foo(1);
System.out.println(output);
}
}
输出结果如下:
134
13423
作者:
袁术森
时间:
2013-3-23 12:09
考察的是try{}catch(){}和finally{}以及return的相互关系的知识点
try代码块中 是有可能抛出异常的代码,是有可能 。如果代码异常,就会异常抛出,则异常代码下的语句是执行不到。如foo(1)时 就没有执行到 output += "1";
异常抛出后catch捕捉代码块 ,就会进行处理。如果try代码块没有发生异常,则catch代码块就不会被执行到。而finally代码块是一定要执行的代码。finally语句的出现一般是为了释放共享资源 如对数据 库的连接中断,对锁的释放,防止异常。等等。执行到return语句时,程序会在结束前执行完要执行的代码,即finally代码块。finally是在return之前执行。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2