答案为:
- finally 2
- main 3
- over 3
去掉100行之后为:
- finally 2
- main 1
- over 2
解析:
- 首先try,catch无论触发那个,都会执行最后的finally;所以因为try中抛错,catch捕获错误,i=1,并将 i 的值压栈;执行finally的时候,打印++1,i= 2 ,得到finally 2;finally 中 return ++i ,i = 3,将 i 的值压栈,所以函数的返回值按栈先进后出原则,得到 3 ,打印 :main 3;最后是打印: "over"+ i = over 3。
- 因为try中抛错,catch捕获错误,i=1,并将 i 的值压栈;执行finally的时候,打印++1,i= 2 ,得到finally 2;出栈,得到值 1 ,打印 :main 1;最后是打印: "over"+ i = over 2。