none
关于异常处理定位问题,一个类的内部之间调用过程中抛出异常,怎么设置将异常抛出位置定位到类的外部的相关调用代码行? RRS feed

  • 问题

  •       class B
            {
                public void A()
                {
                    throw new Exception("exception!");
                }
            }
    
           B b1=new B();
           b1.A();
    
        

    如上述例子代码,当我调用A方法,内部因为条件不满足等种种情况,而自己引发异常,弹出“未经异常处理”提示框,其定位的位置是throw new Exception这一行代码。这是定位到类的内部去了。

    假设这个异常引发的根本原因是外部传入的参数不满足条件而导致的,如果定位到内部,短时间可能找不到错误代码在哪,能不能自己设置异常抛出的位置?定位到最近的外部调用代码。例如b1.A();这一行代码呢?

    • 已编辑 Trian555 2019年2月19日 9:25
    2019年2月19日 9:21

全部回复

  • 建议增加参数合法性校验,如何不满足,Throw异常。

    ericzhou

    2019年2月20日 0:54
  • Trian555 你好,

    欢迎在MSDN论坛发帖。

    你可以使用Try Catch来重新定位异常的抛出位置。

     class B
        {
            public void A()
            {
                throw new Exception("exception!");
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    B b1 = new B();
                    b1.A();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
    
            }
        }

    Best Regards,

    Wendy


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年2月20日 2:03