class A
{
try
{
//引发异常的代码
}
catch(Exception e)
{
B b = new B(e);//传递到B
}
}

解决方案 »

  1.   

    不修改Class A,可以修改Class B,把Exception当成参数传入。
      

  2.   

    当然得传过去了
    不传过去
    Class B如何访问。
    不可以。
      

  3.   

    大家不觉得“不可以“三个字真的很苍白吗?呼唤达人啊~~~~
    我觉得在catch块执行结束以前异常堆栈是客观存在的,比如你在catch最后写一个throw
    这个异常还是会继续向上抛出,那么我可不可以通过某种方式直接访问到异常堆栈呢?
      

  4.   

    Exception error = Server.GetLastError();
    是要这个么?
      

  5.   

    这样说一下
    class A
    {
         int i = 1;
         B b = new B();
        
    }
    class B
    {
        public B()
        {
           //我在这里能访问i么??
        }
    }
      

  6.   

    不明白楼主想干什么
    catch
    {}
     
    不带参数是不能访问异常对象,获得异常信息的,更别说传递了
      

  7.   

    To solsolsol(秋水萧萧) : 异常堆栈和一个局部变量不好作比吧。
    To bigrongshu(Simple life @ Innovation) : 不带参数是不能访问异常对象,获得异常信息的,更别说传递了 这句话有出处吗?
    To cugliang(雨帘) : 您是最幽默的人。再次说明一下,我的目的是想深入一点的了解一下 .NET 中的异常堆栈,是否可以通过类似
    “反射“之类的手段对其直接进行访问。
    我是在看到StackTrace的时候突然冒出的想法,用Environment.StackTrace 属性以逆向时间顺序列出方法调用,即首先描述最近的方法调用,然后为堆栈上的每个方法调用都列出一行堆栈跟踪信息。那么异常堆栈是否也存在直接进行访问的可能呢?
      

  8.   

    class A
    {
        int a;
        public A()
        {
            int aa;
            B b = new B();
        }
    }class B
    {
        B()
        {
            //在这里能访问A.a和aa吗?
        }
    }楼主,你要是连上面的问题都回答不上来,那还是先学学基础知识再说吧。
      

  9.   

    在执行B类时A.a和aa就要被回收了,你可以将A.a和aa想办法声明成手工回收,你通过在B中执行回收垃圾的机制有可能能访问到!你试试吧
      

  10.   

    楼主去这个地方下载视频看看,里面讲的很清楚http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/episode.aspx?newsID=1242570