gpt4 book ai didi

c# - 如何从外部 try/catch 传递值到 catch block (不使用全局变量)

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:28 26 4
gpt4 key购买 nike

看看下面的代码:

try
{
Parallel.Foreach(...)//50 Thread For Each Time
{
string str = MyMethod();
}
}
catch
{

}
public string MyMethod()
{
CookieContainer cookieJar = new CookieContainer();

// Some code that throws an exception.
}

如何将 cookieJar 传递给 catch block ?

注意:
出于某种原因,我不能使用全局变量。我在 try 中使用 Parallel.ForEach 并且由于并行更改,我无法控制 MyMethod 中的全局变量。

最佳答案

您可以在 MyMethod 中捕获异常并重新抛出一个将包含 CookieContainer 对象的新异常:

try
{
Parallel.ForEach(...)
{
string str = MyMethod();
}
}
catch (AggregateException ae)
{
// This is where you can choose which exceptions to handle.
foreach (var ex in ae.InnerExceptions.OfType<MyCookieException>())
{
CookieContainer c = ex.CookieContainer;

// Do stuff with CookieContainer.
}
}

public string MyMethod()
{
CookieContainer cookieJar = new CookieContainer();
try
{
// Some code that throws an exception
}
catch (Exception ex)
{
throw new MyCookieException(ex, cookieJar);
}
}

关于c# - 如何从外部 try/catch 传递值到 catch block (不使用全局变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12874217/

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