首先output为一个共享数据,在运算时一直进行累加;调用foo(0)这个方法,判断i是否等于1,不等于1,则没有抛出异常,不走catch,但是finally必须走,然后再往下执行,这时输出的为34;紧接着调用foo(1),这个时候要明确一点,output的值已经为34了,判断i==1,抛出异常,走catch中output+="2";,这时为342,接着读到return;这时程序会看有没有finally如果有执行,没有程序结束,走完finally值为3423,但是output+=“4”是不会执行的,因为catch中读到return,这时只会去看有没有finally,有的话执行没有程序结束。所以结果为34,3423 |