zoukankan      html  css  js  c++  java
  • try-catch-finally

    try catch finally与return的执行顺序 

    测试1:    
    public static int test1()    
    {         int i = 1;     
        try        
      {       
          return ++i;      
       }      
       finally       
      {      
           ++i;           
      Console.WriteLine("finally:" + i);     
       } 

     }

        static void Main(string[] args)    
    {        
    Console.WriteLine("Main:" + test1());  
      }
    结果:
    finally:3
    Main:2

    测试2:     public static int test2()  
       {   
          int i = 1;         try       
      {           
      throw new Exception();    
         }        
    catch     

        {        

         return ++i;   

          }        

    finally        

    {           

      ++i;            

    Console.WriteLine("finally:" + i);       

      }    

    }    

    static void Main(string[] args)    

    {        

    Console.WriteLine("Main:" + test2());    

    }

    结果:

    finally:3

    Main:2

    测试3:    

    public static int test3()    

    {       

      try{}      

       finally      

       {          

       return 1;      

       }   

      }

    结果: 编译错误,控制不能离开 finally 子句主体。

    结论:

    1.不管出没出现异常,finally块中的语句都会执行;

    2.当try或catch块中有return语句时,finally块中的语句仍会执行;

    3.finally块中的语句是在函数返回前执行的,但函数返回值是在finally块中语句执行前确定的;

    4.finally块中不能包含return语句。

  • 相关阅读:
    bzoj1797
    bzoj1266
    bzoj1497
    bzoj1412
    bzoj3156
    JSOI2014第三轮总结
    bzoj1855
    bzoj1044
    codeforces 371D
    codeforces 371B
  • 原文地址:https://www.cnblogs.com/hobby0524/p/3251316.html
Copyright © 2011-2022 走看看