c# – 如何处理代码深处的异常?

我有一个返回xml的web服务.问题是在代码中“深入”执行的方法,其中简单的返回不会停止程序执行.

会发生什么是我在catch语句中设置我的xml错误消息,但代码将继续执行外部方法的其余部分并覆盖我的xml错误响应.

是否有设计模式或最佳实践来解决这个问题?

      Main Program Block                    SomeClass

         execute someMethod()     ---->     public someMethod()
                                            {
                                                    -----> private method()// try / catch error occurred (send back an xml error response)

                                                    // code execution continues and does some stuff and generates an xml response
                                                    <request>
                                                    <success>true</success>
                                                    </request>
                                            }
最佳答案
你可以重新抛出异常.例如:

    private static string errorMessage;
    static void Main(string[] args)
    {
        try
        {
            Test1();
        }
        catch (Exception ex) 
        {
            Console.WriteLine("Something went wrong deep in the bowels of this application! " + errorMessage );
        }

    }

    static void Test1()
    {
        try
        {
            Test2(1);
            Test2(0);   
        }
        catch (Exception ex)
        {
            errorMessage = ex.Message;
            throw;
        }
    }

    static string Test2(int x)
    {
        if (x==0) throw new ArgumentException("X is 0!");
        return x.ToString();
    }

另外一条建议:当重新抛出异常时,使用throw;,而不是抛出ex;,以保留堆栈跟踪.有关该主题的更多信息,请参见this.

转载注明原文:c# – 如何处理代码深处的异常? - 代码日志