gpt4 book ai didi

c# - 重新抛出异常

转载 作者:行者123 更新时间:2023-11-30 21:30:06 24 4
gpt4 key购买 nike

我有以下代码:

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

当 try block 抛出异常时,程序会在 catch block 中正常运行并显示有关错误的信息。

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

我在网上没有找到解决方案,所有的例子都对应我的代码。

编辑

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

    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;
}
}

最佳答案

问题在于 AggregateException 的处理方式;将您的方法更改为 async 方法(它消除了 AggregateException 包装器),throw 将按预期工作:

public static async Task<string> Get(string requestUri)
{
try
{
return await GetStringAsync(requestUri);
}
catch (Exception exception) // Or, specify the expected exception type
{
Console.WriteLine(exception);
throw; // can be caught in the calling code
}
}

关于c# - 重新抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54726882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com