0

如果我执行以下操作,Jon Skeet 会将我喂给他的宠物独角兽吗?

private void TakeTheRisk()
{
    try
    {
        ...
        DoRiskyBusiness();
        ...
    }
    catch (SomeException ex)
    {
        ProcessAndRethrowException(ex);
    }
}

private async Task TakeYetAnotherRiskAsync()
{
    try
    {
        ...
        await DoEvenMoreRiskyBusinessAsync();
        ...
    }
    catch (SomeException ex)
    {
        ProcessAndRethrowException(ex);
    }
}

private void ProcessAndRethrowException(SomeException ex)
{
    ...
    throw; // given to understand `throw ex;` will lose stack trace, right?
}

主要动机是通用异常处理逻辑。这个处理逻辑很重要,我宁愿不需要复制它。是否有可能以某种方式将其重构TakeTheRiskTakeYetAnotherRiskAsnyc上述ProcessAndRethrowException内容?

4

0 回答 0