try
        {
          // 1 
        }
        catch(Exception)
        {
          //2
        }
        finally
        {
           //3
        }        //4请问上面代码中,写在3处的代码和写在4处的代码有什么区别呢?

解决方案 »

  1.   

    try
            {
              // 1 
    RETURN;
            }
            catch(Exception)
            {
              //2
            }
            finally
            {
               //3
            }        //4
    3执行4部执行  
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  2.   

    释放这些资源的代码放置在 finally 块中
      

  3.   

    位置3和位置4的代码意义一样,不过看起来位置3和try内部结合得比较紧密,而位置4比较松散,关系不大。一般在代码分段时需要考虑,方便阅读。
      

  4.   

    try
            {
              // 1 
            }
            catch(Exception)
            {
              //2
              throw new Exception(); 
            }
            finally
            {
               //3
               
            }        //4
    假如你的代码是这样,那3一定会被执行,4不会被执行
      

  5.   

    区别在于catch中异常是否重新抛出,如果重新抛出,那么3处还是会执行,而4处不会
      

  6.   

    2楼说的很对,当你有Return语句时,Return后面的代码段就不会执行了。但是在Finally中的代码无论在任何时候都会执行的。
      

  7.   

    如果在块1或2中有return ,3执行,4不执行
      

  8.   

    楼主的理解错误。楼上几位说的很对,写在finally块里的语句不管任何情况下都会执行,甚至在try块或catch块里有return语句或抛异常的语句时也会执行。
    只有在一种情况下位置3和4的作用才类似,那就是try块中没有return语句,catch块中不抛异常,没有return 语句。那么代码放在位置3或4都会被执行。
      

  9.   

    Finally中的代码无论在任何时候都会执行的。
      

  10.   


    我还以为是专家呢,我差点相信了,幸亏我又试验了一下:如果无异常,2执行,如果1部分发生异常,1234都会执行。如果4之前有Retrun语句,那么3会执行,4不会执行,这就是3和4位置处代码的根本区别。看来最对的是2楼的朋友。