1

我有一段看起来像这样的代码:

try
{
  // Do stuff
  operationInfo.success = true;
}
catch
{
  operationInfo.success = false;
  throw;
}
finally
{
  try
  {
     UploadToServer(operationInfo);
  }
  catch
  {
     // Suppress, it's ok if we can't upload to the server
  }
}

我的问题是,在这种情况下,如果在主 try 块中抛出异常,然后 finally 块实际上在 UploadToServer 方法中抛出(并处理)另一个异常,堆栈跟踪会发生什么情况?您是否获得了引发的最后一个异常的堆栈跟踪,或者它是否会正确冒泡?

我正在寻找更多关于 IL 如何管理幕后发生的事情的解释,而不是简单的“是或否”答案。

谢谢。

4

0 回答 0