重新抛出异常

时间:2019-02-16 19:31:51

标签: c# .net

我有以下代码:

public static string Get(string requestUri)
{
    try
    {
        return GetStringAsync(requestUri).Result;
    }
    catch (AggregateException aggregateException)
    {
        Console.WriteLine(aggregateException);
        throw;
    }
}

当try块引发异常时,程序将在catch块中按应有的方式运行,并显示有关错误的信息。

问题是,一旦到达重新抛出的位置,调试器将停止并再次引发相同但异常级别相同的异常,尽管它应该在堆栈中上升一级...

我没有在Internet上找到解决方案,所有示例都与我的代码相对应。

编辑

您的解决方案适用于上面的代码,但是我还有另一个也不起作用:

    public static string Post(string requestUriString, string s)
    {
        var request = (HttpWebRequest)WebRequest.Create(requestUriString);
        var data = Encoding.ASCII.GetBytes(s);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = data.Length;

        using (var stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }

        try
        {
            var response = (HttpWebResponse)request.GetResponse();
            return new StreamReader(response.GetResponseStream()).ReadToEnd();
        }
        catch (WebException webException)
        {
            Console.WriteLine(webException);
            throw;
        }
    }

1 个答案:

答案 0 :(得分:3)

问题是References的处理方式;将您的方法更改为AggregateException方法(省去了async包装器),AggregateException将按预期工作:

throw