知道后面的怎么想了!因为foo(0)后output变为了134,然后foo(1),if(i==1); throw new Exception()进入抓异常,output+="2",这时的结果为1342,然后进入finally,因为finally是必须要执行的,所以 output+="3";,所以这时的结果为13423,然后return结束!
public static String output="";//此处将变量定义成静态的成员变量,那么在后面的语句中如果不对变量清空的话,执行output+="1"这样类似的语句,那么变量将一直累加下去,所以在main函数中执行foo(0)以后变量内的之会保留,在执行foo(1)时,输的变量开头会与foo(0)执行完输出的变量一样
public static void foo(int i)
{
try
{
if(i==1)
throw new Exception();//如果这里抛出异常则下面的output+="1"代码将不会执行,而执行catch代码块;如果没有抛出异常,则执行output+="1"代码而不执行catch代码块;