涅槃2012 发表于 2012-10-25 23:59:19

一道异常处理执行顺序面试题的简单分析

异常处理,我们写的代码里经常会用到:try{}catch{}finally{}。可是大家真的了解它吗?
下面的代码,运行结果是什么?大家猜一下:

http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttp://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifView Code <div id="cnblogs_code_open_425f5646-73ae-41f1-bf1e-4c5e64905df3" class="cnblogs_code_hide">    static class Program
    {

      static void Main(string[] args)
      {
            Console.WriteLine(Program.MethodC());
            Program.MethodB();
            Console.ReadLine();
      }

      static void MethodA()
      {
            try
            {
                throw new NullReferenceException();
            }
            catch (IndexOutOfRangeException)
            {
                throw;
            }
            finally
            {
                Console.WriteLine("MethodA finally");
            }
      }

      static void MethodB()
      {
            try
            {
                MethodA();
            }
            catch (NullReferenceException)
            {
                Console.WriteLine("MethodB catch");
            }
            finally
            {
                Console.WriteLine("MethodB finally");
            }
      }

      static int i = 1;
      static int MethodC()
      {
            try
            {
                Console.WriteLine("MethodC try");
                return i;
            }
            finally
            {
                i = 2;
                Console.WriteLine("MethodC finally");
                Console.WriteLine("MethodC:"+i);
            }
      }
页: [1]
查看完整版本: 一道异常处理执行顺序面试题的简单分析