【发布时间】:2011-09-16 15:44:33
【问题描述】:
这个例子“失败”:
static async void Main(string[] args)
{
try
{
await TaskEx.Run(() => { throw new Exception("failure"); });
}
catch (Exception)
{
throw new Exception("success");
}
}
也就是说,带有“失败”文本的异常会冒泡。
然后我尝试了这个解决方法:
static async void Main(string[] args)
{
try
{
await SafeRun(() => { throw new Exception("failure"); });
}
catch (Exception)
{
throw new Exception("success");
}
}
static async Task SafeRun(Action action)
{
var ex = default(Exception);
await TaskEx.Run(() =>
{
try
{
action();
}
catch (Exception _)
{
ex = _;
}
});
if (ex != default(Exception))
throw ex;
}
这也没有帮助。
我想我的异步 CTP 刷新安装可能会被破坏。
这段代码是否应该按我的预期工作(“成功”冒泡,而不是“失败”),或者这不是“应该”以这种方式工作。如果没有,您将如何解决?
【问题讨论】:
标签: c# exception async-await c#-5.0