如果我执行以下操作,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?
}
主要动机是通用异常处理逻辑。这个处理逻辑很重要,我宁愿不需要复制它。是否有可能以某种方式将其重构TakeTheRisk
为TakeYetAnotherRiskAsnyc
上述ProcessAndRethrowException
内容?