这个例子“失败”:
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 刷新安装可能会被冲洗掉。
这段代码是否应该按我的预期工作(“成功”冒泡,而不是“失败”),或者这不是“应该”以这种方式工作。如果没有,您将如何解决它?