我有一段看起来像这样的代码:
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 如何管理幕后发生的事情的解释,而不是简单的“是或否”答案。
谢谢。