1. public class test { 2. public static string output = “” 3. 4. public static void foo(int i) { 5. try { 6. if(i= =1) { 7. throw new Exception (); 8. } 9. output += “1”; 10. ) 11. catch(Exception e) { 12. output += “2”; 13. return; 14. ) 15. finally ( 16. output += “3”; 17. ) 18. output += “4”; 19. ) 20. 21. public static void main (string args[]) ( 22. foo(0); 23. foo(1); 24. 25. ) 26. ) What is the value of the variable output at line 24? Ans: 13423 答案怎么会输出5个数字呢? 首先,foo(0),就直接到第9行。output=1 然后,因为没有抛出异常,所以直接运行16行。 然后运行18行。此时,output=134. foo(1),因为抛出异常,所以运行12行。 然后因为catch了异常,然后运行finally里的语句。 但是18行的不再被运行,因为13行已经要求return了。 |