为什么无法捕获此异常?

时间:2020-05-22 22:04:43

标签: c# .net

我有一个自定义异常InsertLeadException,它从Exception继承。现在,我的代码如下:

....
try
{
    isSuccess = _proxy.SendAsync(message).NoState();
}
catch (InsertLeadException ex)
{
    ...
}
catch (Exception ex)
{
    ...
}   
....

这是代理中的SendAsync:

public async Task<bool> SendAsync(Message message)
{
    List<Task<bool>> tasks = new List<Task<bool>>();
    var task = ProcessMessageAsync(message);
    tasks.Add(task);

    var legacyTask = LogLeadAsync();
    tasks.Add(legacyTask);

    Task.WaitAll(tasks.ToArray());

    return task.Result;     // only need return result of 1st task
}

在ProcessMessageAsync中,我只是做

throw new InsertLeadException("Test Exception."); 

在LogLeadAsync中,也没有例外。

由于某些原因,运行代码时,它不会捕获InsertLeadException,而是会捕获Exception。

但是,如果我像下面那样实现,它确实会捕获InsertLeadException:

public async Task<bool> SendAsync(Message message)
{
    var task = await ProcessMessageAsync(message).NoState();        
    var legacyTask = await LogLeadAsync().NoState();

    return task;        
}

有人知道为什么吗?

谢谢

0 个答案:

没有答案