class Exce
    {
        static void Main()
        {
            try
            {
                Console.WriteLine("Executing the try statement.");
                throw new NullReferenceException();
            }
            catch (NullReferenceException e)
            {
                Console.WriteLine(" Caught exception #1.");
            }            
           finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
在try_catch_finally这个结构中,finally语句如果去掉的话, Console.WriteLine("Executing finally block.");这句都会执行的,那么
finally语句到底有什么作用。

解决方案 »

  1.   

    当try里面的语句出现异常时,就跳转catch语句.
    finally通常用来做后事处理.就是说如果真的出错了,就执行finally里面的句子..从而使系统稳健~~
      

  2.   

    finally块如果存在的话不管有没有catch块都会执行,如果只删除了finally{}而保留了Console.WriteLine("Executing finally block.");结果当然有没有finally语句都一样了, 因为如果没有finally块,程序完成catch后就继续后面的代码.
      

  3.   

    无论是否出现异常,finally块中的语句都会执行的。我想问的是finally块里的语句有什么作用,不放在finally块里不是也照样执行么?
      

  4.   

    不一样....
    要是catch 块中再有异常抛出...
    finally 块一样会执行.要是没没finally ,catch 块中抛出异常,catch后面的语句就不能执行了..
      

  5.   

    除了 yeerh(边城浪) 说的情况,还有一种情况,就是如果 try...catch ... 中有renturn 时:
    1、有 finally 块的代码  Console.WriteLine("Executing finally block.");始终要执行,只有执行完  Console.WriteLine("Executing finally block.");才真正返回;
    2、没有 finally 块的代码,则在遇到 return 时就返回了。
    所以,finally 块可以增强系统的稳定性,一般在此处放置的代码一般是系统资源的释放工作。
    比如:
    IDBWrapper dbWrapper = GetDBWrapper();
    try
    {
    dbWrapper.Open();
    dbWrapper.BeginTrains();// somethingsdbWrapper.CommitTrains();
    }
    catch(Exception exp)
    {
    // 记录错误日志
    }
    finally
    {
    if (ConnectionState.Closed != dbWrapper.State)
    {
    // 关闭数据库联接
    dbWrapper.Close();
    }
    }
      

  6.   

    AloneSword(孤剑)对,
    try
    {
    ....
    }
    catch
    {
    .....
    }
    finally
    {
    }
    如果在try中和catch中出现了return语句,那么先执行finally块中的语句后返回,如果去掉了finally后就不执行了
      

  7.   

    你程序中要是有return语句或者没有catch语句,你就看的更加明白了