我想从最底层抛出异常,在UI层捕获,请教该怎么抛异常?//最底层的A方法
        public void A()
        {
            try
            { 
                ……
            }
            catch
            {
                throw;
            }
        }        //中间层的B方法
        public void B()
        {
            try
            { 
                A();
                ……
            }
            catch
            {
                throw;
            }
        }        //UI层的C方法
        public void C()
        {
            try
            { 
                B();
                ……
            }
            catch
            {
                //用户提示或是其他的操作
            }
        }
我这样做为什么不行?请问应该怎么做?谢了。

解决方案 »

  1.   

    首先你要确定你的异常从C方法有没有抛出来,是没有抛出来,还是没有Catch到的问题。
    另外这样catch{}是不能得到异常信息的。
     public void C()
            {
                try
                { 
                    B();
                    ……
                }
                catch(Exception e)
                {
                    //用户提示或是其他的操作
                }
            }
      

  2.   

    C()方法的异常我是catch(Exception e),我调试的时候直接就在中间的throw卡住了,程序就崩了。
      

  3.   

    //最底层的A方法
            public void A()
            {
                try
                { 
                    ……
                }
                catch
                {
                    throw new Exception("最底层的A方法 异常")
                }
            }        //中间层的B方法
            public void B()
            {
                try
                { 
                    A();
                    ……
                }
                catch
                {
                     throw new Exception("中间层的B方法 异常")            }
            }        //UI层的C方法
            public void C()
            {
                try
                { 
                    B();
                    ……
                }
                catch(Exception ex)
                {
                   MessageBox.Show(ex.Message);
                    //用户提示或是其他的操作
                }
            }
      

  4.   

    throw后边要跟一个Exception对象,要不throw什么?扔酒瓶?
      

  5.   


    请看MSDN!问题解决了,我的这种方法是能抛出的,问题出现的原因错误(我的程序是多线程的,主次线程异常不能传递抛出)
    感谢大家的回答。
    结!